在汇编语言中有直接对位进行操作的指令,如置位、复位、位取反、测试某一位等,这对于硬件操作十分方便,在C语言中尽管也提供了一些位操作手段,如按位与、按位或、按位取反等,但它们是对一个字节进行操作,如要对具体的一位操作,仍旧不方便,以下给出了一些函数,可以模仿汇编语言的一些位操作功能。

#define uchar unsigned char

/*测试变量某一位是否为‘1’,是返回真,否返回假,num为待测试的数,bit为位数,其值从0到7,下同*/

uchar bittest(uchar num,uchar bit)

{ if(num>>bit&0x01==1)

return 1;

else

return 0;

}

uchar bitclr(uchar num,uchar bit) /*清除某一位*/

{

uchar bit_value[]={1,2,4,8,16,32,64,128};

return num&~bit_value[bit];

}

uchar bitset(uchar num,uchar bit) /*设置某一位*/

{

uchar bit_value[]={1,2,4,8,16,32,64,128};

return num|bit_value[bit];

}

uchar bitcpl(uchar num,uchar bit) /*取反某一位*/

{

uchar bit_value[]={1,2,4,8,16,32,64,128};

if(num>>bit&0x01==1)

return num&~bit_value[bit];

else

return num|bit_value[bit];

}

/*以下主程序演示,调用时,可以直接给出数值,也可以给出变量名*/

void main(void)

{

uchar xx=0xfe;

xx=bitset(xx,0);

printf("The set out is %x\n",xx);

printf("The clr out is %x\n",bitclr(255,0));

printf("The test out is %x\n",bittest(0xff,0));

printf("The cpl out is %x\n",bitcpl(0x00,7));

}

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

c51语言中 位取反指令,C51的几种位操作运算说明相关推荐

  1. c语言单片机位取反指令,51单片机位及位操作指令

    我们已经习惯了"位"一位就是一盏灯的亮和灭,而我们学的指令却全都是用"字节"来介绍的:字节的移动.加法.减法.逻辑运算.移位等等.用字节来处理一些数学问题,比如 ...

  2. c语言中的普通字符包括什么,【判断题】C语言中的字符常量通常有两种形式:普通字符和转义字符。...

    [判断题]C语言中的字符常量通常有两种形式:普通字符和转义字符. 更多相关问题 ---Can you speak French?---Yes, but only____.A.a littleB.lit ...

  3. c语言中用于程序化结构设计的三种结构是,c语言中用于结构化程序设计的3种基本结构是...

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. c语言中用于结构化程序设计的3种基本结构是顺序结构.选择结构.循环结构. 顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出 ...

  4. 指针数组下标JAVA_Java语言中可用下标和指针两种方式表示数组元素。

    [判断题]一行可以写多条预处理命令 [判断题]如果一个java程序中有多个类,编译后只生成一个字节码文件,其名字同主类名一致. [判断题]Protected类型的实例变量只能在本类中使用,其他类中不可 ...

  5. c语言中字符串去掉逗号,JS四种方法去除字符串最后的逗号

    window.οnlοad=function() { var obj = {name: "xxx", age: 30, sex: "female"};//定义一 ...

  6. c51转汇编语言窗口,在C51语言中如何嵌入汇编语言

    keil C 语言中嵌入汇编语言进行混合编程,方法如下: 1.在C 文件中要嵌入汇编代码片以如下方式加入汇编代码 #pragma ASM ; Assembler Code Here #pragma E ...

  7. C51语言支持哪些数据类型,C51编译器支持的数据类型(1)

    1.1 C-51 编译器支持下列数据类型: 数 据 类 型 长 度 值 域 bit 1 字节 0 或 1 signed char 1 字节 -128-+127 unsigned char 1 字节 0 ...

  8. 单片机c51语言定义bool类型,C51单片机数据类型的具体定义及应用

    描述 先来简单说说C语言的标识符和关键字.标识符是用来标识源程序中某个对象的名字的,这些对象可以是语句.数据类型.函数.变量.数组等等.C语言是大小字敏感的一种高级语言,如果我们要定义一个定时器1,可 ...

  9. c51语言c100错误,KEIL C51错误的解决办法

    有时候在编好一个程序之后,编译链接时,提示说有如下错误. 错误为 ..校长基金1TEXT1.C(56): error C100: unprintable character 0xA1 skipped ...

  10. c语言中预处理指令的作用,C语言中常用预处理指令

    转载自 https://blog.csdn.net/farsight2009/article/details/58602886 姓名:张艳博 学号:17021223249 [嵌牛导读]: C语言中常用 ...

最新文章

  1. 现在无法开始异步操作。异步操作只能在异步处理程序或模块中开始,或在页生存期中的特定事件过程中开始...
  2. linux alias命令参数及用法详解--linux定义命令别名alias
  3. wordpress插件在服务器上的存储位置
  4. TPTP(Java Profiling Tools插件)对Java程序进行性能测试
  5. mysql复制模式有几种_MYSQL复制的几种模式
  6. 文献管理三剑客之noteexpress打不开 cannot find import; dll may be missing corrupt or worng
  7. 如何在VS中统计项目代码量
  8. 【重识云原生】第六章容器6.1.3节——Docker常用命令
  9. kali之搜狗输入法安装下载
  10. 自定义数据类型的指针的含义
  11. 禁用驱动数字签名验证
  12. Oracle VM VirtualBox 打开Ubuntu出现0x00000000指令引用的0x00000000内存,该内存不能为written的解决方案
  13. Android性能优化方案
  14. Python处理视频实现特效案例十二则
  15. 整理了46个python人工智能库,详细介绍(含资源),建议收藏
  16. 移动推送:灵活、高效、精准的App消息推送
  17. Color Constancy 色彩恒常性(1)White Patch Retinex
  18. npm,vue简易安装教程
  19. 管理者的角色修炼-第一课总结
  20. windows phone水平滑动翻页动画效果

热门文章

  1. 【Python】SyntaxError: Non-ASCII character '\xe8' in file
  2. Atitit 图像处理 halcon类库的使用  范例边缘检测 attilax总结
  3. atitit.基于bat cli的插件管理系统.doc
  4. atitit。企业组织与软件工程的策略 战略 趋势 原则 attilax 大总结
  5. paip.提升性能---C#.NET程序内存占用过多以及OutOfMemory解决方法
  6. 为企业发展赋能,让零散数据资源变为企业数据资产
  7. (转)JD-Quant量化交易平台设计:延迟latency
  8. (转)Rust语言2017年调查报告
  9. (转)查理·芒格:光靠已有的知识,你走不了多远
  10. (转)听赌徒谈风险:没犯任何错误照样输个精光