




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式-Linux-位运算详解1、常用位操作符图2-11.1、位与(&)位与就是对数的二进制位位进行运算。两个数每个二进制位的运算规则按照如下规则运算,该规则就是其真值表(如下)。&01000101从其运算规则(真值表)可以看出只有1和1进行与运算的结果是1,其余的全是0,如果我们将1当做为真,0当做假的话,按照与运算的要求,两个为真才为真,只要有一个为假就为假。好了,我们看下面一个例子:3 & 5 = ?(1)分析可知这两个是十进制数,所以先把这两个数都化为二进制数:3的二进制:0b00115的二进制:0b0101(2)将这两个数的二进制形式按照上面的运算规则进行按位与运算:0b0011 (3)&0b0101 (5)=0b0001 (1)(3)将得到的二进制结果0b0001变为十进制,十进制结果为1。所以可以得出结论:3 & 5 = 1。扩展:&(按位与) 和 &(逻辑与)的区别&(逻辑与)是将要运算的两个数都看做成一个整体,而这个整体如果是0,则该数被定义成逻辑假(0),如果该数不为0(不管是正的还是负的)则被定义成逻辑真(1)。来看几个小例子:(1)3 & 5 = ?分析:3(逻辑真) 5(逻辑真),真 & 真 = 真,所以结果为真,即:3 & 5 = 1(2)3 & 0 = ?分析:3(逻辑真) 0(逻辑假),真 & 假 = 假,所以结果为假,即:3 & 0 = 0(3)3 & -5 = ?分析:3(逻辑真) -5(逻辑真),真 & 真 = 真,所以结果为真,即:3 & -5 = 11.2、位或(|)对两个两个数的二进制位进行或运算。其真值表如下。|01001111从其真值表可以看出只有0和0进行或运算的结果是0,其余的全是1,如果1为真,0为假,或运算就是,只要有一个为真就为真,两个为假才为假。比如下面这个例子:3 | 5 = ?第一步:将十进制化为二进制:3化为二进制:0b00115化为二进制:0b0101第二步:对这两个数的二进制形式按照上面的运算规则进行按位或运算:0b0011 (3)|0b0101 (5)=0b0111 (7)第三步:将二进制结果0b0111转为十进制,十进制结果为7所以可以得出结论:3 | 5 = 7。第四步:扩展:|(按位或) 和 |(逻辑或)的区别|(逻辑或)是将要运算的两个数都看做成一个整体,而这个整体如果是0,则该数被定义成逻辑假(0),如果该数不为0(不管是正的还是负的)则被定义成逻辑真(1)。来看几个小例子:3 | 5 = ?分析:3(逻辑真) 5(逻辑真),真 | 真 = 真,所以结果为真,即:3 | 5 = 13 | 0 = ?分析:0(逻辑真) 0(逻辑假),假 | 假 = 假,所以结果为假,即:0 | 0 = 03 | -5 = ?分析:3(逻辑真) -5(逻辑真),真 | 真 = 真,所以结果为真,即:3 | -5 = 11.3、位取反()位取反就是将操作数的二进制位逐个按位取反(1变成0,0变成1),其真值表如下。0 = 11 = 0从上真值表不难发现规律,取反后,1变0,0变1。比如下面这个例子:10 = ?第一步:将十进制化为二进制10化为二进制:0b1010第二步:对操作数的二进制形式按位取反0b1010 (10) 0b0101 (5)第三步:将二进制结果0b0101转为十进制,结果为5所以可以得出结论:10 = 5。扩展:(按位取反) 和 !(非)的区别!(非)是将操作数看成一个整体,而这个整体如果是0,则该数被定义成逻辑假(0),如果该数不为0(不管是正的还是负的)则被定义成逻辑真(1)。来看几个小例子:!10 = ?分析:10(逻辑真) 非真就是假,所以结果为假,即:!10 = 0!0 = ?分析:0(逻辑假) 非假就是真,所以结果为真,即:!0 = 1!(-10) = ?分析:-10(逻辑真) 非真就是假,所以结果为假,即:!(-10) = 01.4、位异或()位异或就是将两个数的二进制位进行位异或运算。位运算的真值表(如下)。01001110从其运算规则(真值表)可以看出2个位如果相等结果为0,不等结果为1。比如下面的例子:3 5 = ?第一步:将十进制化为二进制:3化为二进制:0b00115化为二进制:0b0101第二步:将这两个数的二进制形式按照上面的运算规则进行按位与运算:0b0011 (3)0b0101 (5)=0b0110 (6)第三步:将二进制结果0b0110转为十进制,十进制结果为6:0b0110化为十进制:6所以可以得出结论:3 5 = 6。1.5、左移位()左移位就是将一个操作数的各二进制位全部左移若干位,左边的二进制位丢弃,右边的二进制位补零。话不多说,来看个例子5 2 = ? 第一步:将十进制化为二进制:5化为二进制:0b00000101第二步:对操作数0b00000101开始进行左移位2次:0b00000101 (5)第一次左移位0b00001010 (10) = 5 * 2第二次左移位0b00010100 (20) = 10 * 2第二步:将二进制结果0b00010100转为十进制,十进制结果为20:所以可以得出结论:5 2 = 20。在这个以为的过程中我们也发现了一个规律,每进行一次左移位操作,得到的结果是原操作数的一倍(x )右移位就是将一个操作数的各二进制位全部右移若干位,左边的二进制位补0或者补1(如果操作数是总数就补0,负数就补1),右边的二进制位丢弃。话不多说,来看例子5 2 = ? (-5) 2 = ? 第一步:将十进制化为二进制:5化为二进制:0b00000101-5化为二进制:0b11111011第二步:对操作数0b00000101开始进行右移位2次:0b00000101 (5)0b11111011 (-5)第一次右移位0b00000010 (2) = 5 / 20b11111101 (-3)第二次右移位0b00000001 (1) = 10 / 20b11111110 (0)第三步:将得出的结果(二进制)还原成十进制形式:0b00000001化为十进
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026华能湖南能源销售有限责任公司应届毕业生招聘笔试参考题库附答案解析
- 2025福建漳州市丹诏资产运营有限公司及权属公司秋季招聘20人笔试备考试题及答案解析
- 2025年衢州市衢江区卫生健康系统招聘高层次紧缺人才11人笔试备考试题及答案解析
- 杭州之江城市建设投资集团有限公司下属子公司公开招聘工作人员4人笔试备考题库及答案解析
- 2025江苏宿迁泗洪县第一人民医院(徐州医科大学附属医院泗洪分院)面向社会招聘聘用制工作人员45人笔试模拟试题及答案解析
- 2025西安经开第十小学教师招聘笔试备考题库及答案解析
- 2026国家能源投资集团有限责任公司高校毕业生乡村振兴专项招聘笔试模拟试题及答案解析
- 2025江苏苏州工业园区尚城幼儿园后勤辅助人员招聘1人笔试参考题库附答案解析
- 2025年金融科技行业创新模式与发展前景研究报告
- 2025年智能音频设备市场规模与应用趋势研究报告
- 2025年山东出版集团有限公司山东出版传媒股份有限公司招聘(192名)笔试参考题库附带答案详解
- 高校艺术团管理工作职责
- 4-04-05-04 国家职业标准数据库运行管理员S (2025年版)
- 民兵学习护路知识课件
- 危重患者皮肤管理课件
- 2025年国防教育知识竞赛试题(附答案)
- 工伤受伤经过简述如何写
- 银行现金取款申请书
- 新媒体新闻写作、编辑与传播(第2版) 课件 第4章 网络新闻编辑与传播
- 医院网络信息安全培训
- 2024年资助政策主题班会课件
评论
0/150
提交评论