.单片机的C语言中位操作用法

风行下载2012 正式版官方下载:/

C

C

单片机的CC语言中位操作用法

作者:郭天祥 来源:转自 更新时间:2008-12-421:50:22

在对单处机进行编程的过程中,对位的操作是经常遇到的。C51 对位的操控能力是非常

强大的。从这一点上,就可以看出C 不光具有高级语言的灵活性,又有低级语言贴近硬件

的特点。这也是在各个领域中都可以看到C 的重要原因。在这一节中将详细讲解C51 中的

位操作及其应用。

1、位运算符

C51 提供了几种位操作符,如下表所示:

运算符 含义 运算符 含义

& 按位与 ~ 取反

| 按位或 << 左移

^ 按位异或 >> 右移

1)“按位与”运算符(&)

参加运算的两个数据,按二进位进行“与”运算。原则是全1 为1,有0 为0,即:

0&0=0;0&1=0;1&0=0;1&1=1;

如下例:

a=5&3;//a=(0b0101) &(0b0011)=0b0001 =1

那么如果参加运算的两个数为负数,又该如何算呢?会以其补码形式表示的二进制数来

进行与运算。

a=-5&-3;//a=(0b1011)& (0b1101)=0b1001 =-7

在实际的应用中与操作经常被用于实现特定的功能:

1.清零

“按位与”通常被用来使变量中的某一位清零。如下例:

a=0xfe;//a=0b

a=a&0x55;

//使变量a 的第1 位、第3 位、第5 位、第7 位清零 a= 0

2.检测位

要知道一个变量中某一位是‘1’还是‘0’,可以使用与操作来实现。

a=0xf5;//a=0b

result=a&0x08;//检测a的第三位,result=0

3.保留变量的某一位

要屏蔽某一个变量的其它位,而保留某些位,也可以使用与操作来实现。

a=0x55;//a=0b

a=a&0x0f;//将高四位清零,而保留低四位 a=0x05

2)“按位或”运算符(|)

参与或操作的两个位,只要有一个为‘1’,则结果为‘1’。即有‘1’为

‘1’,全‘0’为‘0’。

0|0=0;0|1=1;1|0=1;1|1=1;

例如:

a=0x30|0x0f;//a=(0|(0=(0=0x3f

“按位或”运算最普遍的应用就是对一个变量的某些位置‘1’。如下例:

a=0x00;//a=0b

风行下载2012 正式版官方下载:/

3)“异或”运算符(^)

异或运算符^又被称为XOR 运算符。当参与运算的两个位相同(‘1’与

‘1’或‘0’与‘0’)时结果为‘0’。不同时为‘1’。即相同为0,不同为1。

0^0=0; 0^1=1; 1^0=1;1^1=0;

例如:

a=0x55^0x3f; //a=(0^(0=(0=0x6a

异或运算主要有以下几种应用:

1.翻转某一位

当一个位与‘1’作异或运算时结果就为此位翻转后的值。如下例:

a=0x35;//a=0

a=a^0x0f; //a=0 的低四位翻转

关于异或的这一作用,有一个典型的应用,即取浮点的相反数,具

体的实现如下:

f=1.23;//f为浮点型变量 值为1.23

f=f*-1;//f乘以-1,实现取其相反数,要进行一次乘运算

f=1.23;

((unsigned char*)&f)[0]^=0x80;//将浮点数f

单片机中用c语言编写 逻辑按位,.单片机的C语言中位操作用法.pdf相关推荐

  1. 单片机c语言定义位,单片机C语言中位操作用法.pdf

    风行下载2012 正式版官方下载:/ C C 单片机的CC语言中位操作用法 作者:郭天祥 来源:转自 更新时间:2008-12-421:50:22 在对单处机进行编程的过程中,对位的操作是经常遇到的. ...

  2. 用c语言编写的99秒表,单片机00到99秒表的课程设计 含源程序,仿真图,文档

    这是我上个月做的单片机秒表课程设计,这个课程设计是实现00到99秒的一个秒表, 并且有开始和复位功能, 用了一个星期的时间, 附件里面包含秒表的单片机源程序,proteus仿真电路图和课设文档, 都是 ...

  3. 汇编语言和C语言编写程序各有什么优缺点,C语言和汇编语言在单片机开发中,各有什么优缺点?...

    您好,下面这个是我从论坛里面找出来的精华帖.你可以参考参考. C与汇编: C:经编译后,成汇编. 汇编:是自己"完成"了C的工作. C:是从通用化出发的,考虑了单片机的特点,极大地 ...

  4. max7456 C语言,如何使用8位单片机对16位INT型数据进行操作

    描述 在8位单片机中没有16位数的操作指令,所有的int型数据都要通过两个字节分开操作,使用的方法不用,生成的代码也不相同,当然效率也不一样,通过指针对16位数进行操作可以得到高效的代码. 比如通过串 ...

  5. c语言编写简单的成绩管理系统,用c语言编写学生成绩管理系统

    <用c语言编写学生成绩管理系统>由会员分享,可在线阅读,更多相关<用c语言编写学生成绩管理系统(9页珍藏版)>请在人人文库网上搜索. 1.include#include#inc ...

  6. C语言编写一个四位数的和,c语言编写一段程序,输入一个四位数,输出各位数字的和...

    用C语言编写程序,输入一个正整数n(1 #include"stdio.h"intmain(){\x09inti,j,n;\x09inta[12];\x09intmin,mx;\x0 ...

  7. c语言编写fun函数使其实现,函数式语言Corefun的设计与实现(全文完整版)

    <函数式语言Corefun的设计与实现.ppt>由会员分享,可免费在线阅读全文,更多与<函数式语言Corefun的设计与实现>相关文档资源请在帮帮文库(www.woc88.co ...

  8. 为啥现在4位单片机依然没有被淘汰?4位单片机还有用的吗?

    在刚开始学习单片机的时候,我一直以为用越高端的芯片就越牛逼. 而现实,公司做产品和我们单片机学习者,甚至开发者思维都有很大的差异. 我们学习总是想着往高端的学,做开发的时候总是想着往简单的做,最好用自 ...

  9. c语言编写程序x的y次方,C语言变为编程y = x-x立方/ 3! + x五次方力量/ 5! -x7th power / 7!...

    这似乎不对,但是无论如何,我只是想补充一个问题,如果可以的话,您能再帮我一次吗? 您不能采用它,但不要说我的代码是错误的!结果留在那里,我自己看了一下. 它不是正整数(x)的序列,被写了n次,怎么可能 ...

最新文章

  1. 那个一年发了4篇Cell的研究生,后来怎么样了?
  2. ASP.NET文件上传和下载
  3. mysql 安装软件无法启动不了_Mysql 安装服务无法启动解决方案与使用的一般使用指令...
  4. 全网最简单明了的MySQL连接Eclipse方法(JDBC详细安装方式及简单操作)2020新版
  5. 如何为活动设计海报|优秀案例,分享关键技巧
  6. Spring Boot 细节挖掘(全局异常处理)
  7. 等保2.0标准下,测评中重点关注的内容
  8. ES6新特性_ES6箭头函数以及声明特点---JavaScript_ECMAScript_ES6-ES11新特性工作笔记009
  9. java邮件设置成可修改_Java实现发送邮件(可配置)忘记密码,发送邮件
  10. python数据结构之列表(list)——超详细
  11. 说说VNode节点(Vue.js实现) 1
  12. P1165 日志分析 洛谷
  13. 深度解析,马斯克最新发射的先进火箭
  14. 如何将ape转换mp3格式
  15. MySQL生日转年龄
  16. springboot 多任务并行执行
  17. matalab三维画图
  18. 1,matlab仿真正运动学
  19. 用python画皮卡丘代码-用python画一只可爱的皮卡丘实例
  20. Java后端开发工程师是否该转大数据开发?

热门文章

  1. 给 Web 前端开发人员推荐20款 CSS 编辑器
  2. 数据库求最小函数依赖
  3. excel的EOMONTH函数及其用法
  4. 7-1 删除字符串中的子串 (20分)
  5. Ubuntu 18.04 用户登陆界面死循环 NVIDIA 驱动导致用户登陆界面死循环
  6. 传B站35岁女副总裁嫁24岁男主播!资产80亿,任职45家企业
  7. iOS-砸壳篇(两种砸壳方式)
  8. 不要忽略被大牌覆盖掉的埃布埃们
  9. 熙牛《新金融领域—科技交易论坛》圆满落幕
  10. 量子计算应用于洛杉矶港口,货物装卸效率翻倍