第15章位运算精.ppt

上传人:石*** 文档编号:50877883 上传时间:2022-10-16 格式:PPT 页数:15 大小:818.50KB
返回 下载 相关 举报
第15章位运算精.ppt_第1页
第1页 / 共15页
第15章位运算精.ppt_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《第15章位运算精.ppt》由会员分享,可在线阅读,更多相关《第15章位运算精.ppt(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第1515章位运算章位运算第1页,本讲稿共15页l l 主要内容15.1 15.1 位运算符位运算符15.2 15.2 位运算符的运算功能位运算符的运算功能第2页,本讲稿共15页1 15.1 5.1 位运算符位运算符 c c语言中,位运算的对象只能是整型或字符型。语言中,位运算的对象只能是整型或字符型。下表列出了下表列出了c语言提供的语言提供的6种位运算符及其运算功能。种位运算符及其运算功能。运算符运算符 含义含义 优先级优先级&|按位取反按位取反 左移左移 右移右移 按位与按位与 按位异或按位异或 按位或按位或1(高)(高)6(低)(低)2 3 4 5 以上位运算符中,只有求以上位运算符中

2、,只有求“反反”运算符(运算符()为单目运算符,)为单目运算符,其余均为双目运算符。其余均为双目运算符。第3页,本讲稿共15页 下表列出了下表列出了c语言提供的语言提供的5种扩展的赋值运算符。种扩展的赋值运算符。扩展运算符扩展运算符 表达式表达式等价的表达式等价的表达式=&=|=a=3 a=b a&=b a|=b a=a|b a=a3 a=ab a=a&b第4页,本讲稿共15页1 15.2 5.2 位运算符的运算功能位运算符的运算功能1.1.“按位取反按位取反”运算运算 运算符运算符 是位运算中唯一的一个单目运算符。运算对象置于运算是位运算中唯一的一个单目运算符。运算对象置于运算符的右边,其运

3、算功能是把运算对象的内容按位取反。即:符的右边,其运算功能是把运算对象的内容按位取反。即:使每一使每一位上的位上的0变变1,1变变0。在作位运算前,把作位运算对象的值转换为二进制数。在作位运算前,把作位运算对象的值转换为二进制数。例如:例如:求表达式求表达式 0115的值。的值。0 1 0 0 1 1 0 1 (先将八进制数先将八进制数0115转换为二进制数转换为二进制数)1 0 1 1 0 0 1 0 (最后换算成八进制数为最后换算成八进制数为0262)第5页,本讲稿共15页2.2.“左移左移”运算运算 运算符运算符 是位运算中一个双目运算符。运算符左边是移是位运算中一个双目运算符。运算符左

4、边是移位对象,右边是整型表达式,代表左移的位数。位对象,右边是整型表达式,代表左移的位数。左移时,右左移时,右端(低位)补端(低位)补0;左端(高位)移出的部分舍弃;左端(高位)移出的部分舍弃。例如:例如:char a=6,b;b=a2;用二进制来表示运算过程如下:用二进制来表示运算过程如下:a:0 0 0 0 0 1 1 0 (a=6)b=a 是位运算中一个双目运算符。运算符左边是移位对是位运算中一个双目运算符。运算符左边是移位对象,右边是整型表达式,代表右移的位数。象,右边是整型表达式,代表右移的位数。右移时,右端(低右移时,右端(低位)移出的部分舍弃位)移出的部分舍弃,左端(高位)移入的

5、二进制数分两种情,左端(高位)移入的二进制数分两种情况:对于无符号整数和正整数,高位补况:对于无符号整数和正整数,高位补0;对于负整数,高位;对于负整数,高位补补1.(这是因为负数在机器内用补码表示)。(这是因为负数在机器内用补码表示)。例如:例如:char a=64,b;b=a2;移位情况如下:移位情况如下:a:0 1 0 0 0 0 0 0 (a=64)b=a2;用二进制来表示运算过程如下:用二进制来表示运算过程如下:a为为-8-8 时在机内的二进制码:时在机内的二进制码:1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 用八进制数表示为:用八进制数表示为:1 7 7 7 7

6、 0 b=a2后后b在机内的二进制码:在机内的二进制码:1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 用八进制数表示为:用八进制数表示为:1 7 7 7 7 6 b b的值为的值为-2.-2.第8页,本讲稿共15页4.4.“按位与按位与”运算运算 “按位与按位与”运算符运算符&是位运算中一个双目运算符。其作用:是位运算中一个双目运算符。其作用:把把参加运算的两个运算数按对应的二进制位进行参加运算的两个运算数按对应的二进制位进行“与与”运算,当运算,当两个对应的位都为两个对应的位都为1时,该位的结果为时,该位的结果为1;否则为;否则为0。例如,表。例如,表达式达式12&10的运

7、算如下:的运算如下:右移时,若右端移出的部分不含有效二进制数右移时,若右端移出的部分不含有效二进制数1 1,则每右移一,则每右移一位,相当于移位对象除以位,相当于移位对象除以2 2。若右端移出的部分包含有效二进制。若右端移出的部分包含有效二进制数数1 1,这个特性就不适用了。,这个特性就不适用了。12:0 0 0 0 1 1 0 0&10:0 0 0 0 1 0 1 0 结果:结果:0 0 0 0 1 0 0 0 (即(即0010)第9页,本讲稿共15页 “按位与按位与”运算具有如下特征:运算具有如下特征:任何位上的二进制数,只要和任何位上的二进制数,只要和0 0“与与”,该位即被屏蔽(清零)

8、;和,该位即被屏蔽(清零);和1 1“与与”,该位保留原值不,该位保留原值不变变。“按位与按位与”运算的这个特性很具实用性。例如,设有:运算的这个特性很具实用性。例如,设有:char a=0322;char a=0322;则则a a的二进制数为:的二进制数为:1101001011010010。若要保留若要保留a a的第的第5 5位,只需和这样的数进行位,只需和这样的数进行“与与”运算:这个数的第运算:这个数的第5 5位为位为1 1,其余位为其余位为0 0。其运算过程如下:。其运算过程如下:a:1 1 0 1 0 0 1 0&020:0 0 0 1 0 0 0 0 a&020:0 0 0 1 0

9、 0 0 0 (即(即0020)第10页,本讲稿共15页5.5.“按位异或按位异或”运算运算 “按为异或按为异或”运算符运算符 是位运算中一个双目运算符。其作是位运算中一个双目运算符。其作用:用:参与运算的两个运算数中对应的二进制位上,若数相同,参与运算的两个运算数中对应的二进制位上,若数相同,则该位的结果为则该位的结果为0;若数不同,则该位的结果为;若数不同,则该位的结果为1。例如:。例如:063:0 0 1 1 0 0 1 1 0303:1 1 0 0 0 0 1 1 0630303:1 1 1 1 0 0 0 0 (即即0360)第11页,本讲稿共15页 “按位异或按位异或”运算具有如下

10、特征:运算具有如下特征:要使某位的数反转,只要使其要使某位的数反转,只要使其和和1 1进行进行“异或异或”运算;要使某位保持原数,只要使其和运算;要使某位保持原数,只要使其和0 0进进行行“异或异或”运算即可运算即可。“按位异或按位异或”运算的这个特性很具实用运算的这个特性很具实用性。例如,设有:性。例如,设有:char a=0152;char a=0152;则则a a的二进制数为:的二进制数为:0110101001101010。若希望若希望a a的高的高4 4位不变,低位不变,低4 4位取反,只需将高位取反,只需将高4 4位分别和位分别和0 0“异或异或”,低,低4 4位分别和位分别和1 1

11、“异或异或”即可即可。其运算过程如下:。其运算过程如下:a:0 1 1 0 1 0 1 0 017:0 0 0 0 1 1 1 1 a017:0 1 1 0 0 1 0 1 (即即01450145)第12页,本讲稿共15页6.6.“按位或按位或”运算运算 “按位或按位或”运算符运算符|是位运算中一个双目运算符。其作用:是位运算中一个双目运算符。其作用:把把参加运算的两个运算数按对应的二进制位进行参加运算的两个运算数按对应的二进制位进行“或或”运算,当运算,当两个对应的位中有一个为两个对应的位中有一个为1时,该位的运算结果为时,该位的运算结果为1;只有当两;只有当两个相应位的数都为个相应位的数都

12、为0,该位的运算结果才为,该位的运算结果才为0。例如:。例如:0123:0 1 0 1 0 0 1 1|014:0 0 0 0 1 1 0 0 0123|014:0 1 0 1 1 1 1 1 (即(即0137)第13页,本讲稿共15页 利用利用“按位或按位或”运算的操作特点,可以使一个数中的指定位运算的操作特点,可以使一个数中的指定位上置成上置成1 1,其余位不变,即:将希望置,其余位不变,即:将希望置1 1的位与的位与1 1进行进行“或或”运运算;保持不变的位与算;保持不变的位与0 0进行进行“或或”运算运算。例如:若使例如:若使a中的高中的高4位不变,低位不变,低4位置位置1,可采用表达

13、式:,可采用表达式:a=a|017。第14页,本讲稿共15页7.7.位数不同的运算数之间的运算规则位数不同的运算数之间的运算规则 位运算的对象可以是整型(位运算的对象可以是整型(long int long int 或或 int int或或 short short)和字符)和字符型(型(charchar)数据。当两个运算数类型不同时位数会不同。遇到这种)数据。当两个运算数类型不同时位数会不同。遇到这种情况,系统将自动进行如下处理:情况,系统将自动进行如下处理:(1)(1)先将两个运算数右端对齐先将两个运算数右端对齐。(2)(2)再将位数短的一个运算数往高位扩充,即:无符号数和正再将位数短的一个运算数往高位扩充,即:无符号数和正整数左侧用整数左侧用0 0补全,负数左侧用补全,负数左侧用1 1补全,然后对位数相等的这两个补全,然后对位数相等的这两个运算数按位进行位运算。运算数按位进行位运算。第15页,本讲稿共15页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁