收藏 分销(赏)

第9章 位运算.ppt

上传人:xrp****65 文档编号:13131186 上传时间:2026-01-24 格式:PPT 页数:30 大小:538KB 下载积分:10 金币
下载 相关 举报
第9章 位运算.ppt_第1页
第1页 / 共30页
第9章 位运算.ppt_第2页
第2页 / 共30页


点击查看更多>>
资源描述
*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第,9,章 位运算,第,9,章 位运算,本章要点,:,六种位运算的基本概念、主要应用,位运算的混合使用,2,第,9,章 位运算,9,1,位运算的类型,9,2,位运算举例,9,3,位段,9,4,总结与提高,3,9,1,位运算的类型,C,语言一共提供了六种位运算符:,&,:按位,“,与,”,|,:按位,“,或,”,:按位,“,异或,”,:取反,:右移,这六种运算符号的优先级别(由高到低):,&,|,。,这六种运算符号的结合性为:,为自右至左,其它为自左至右。,4,9,1,位运算的类型,要特别注意的是,参与运算的数是以,补码,方式出现的,并且参与运算的量应为,整型,或,字符型,,不能为实型数据。,5,9,1,位运算的类型,按位“与”运算,按位“与”运算符“,&”,是双目运算符,其功能是对参与运算的两数从低位到高位对应的位相与,“与”操作规定为:,1&1,的结果为,1,,,0&1,、,1&0,、,0&0,的结果都为,0,。,6,9,1,位运算的类型,按位“与”运算,例,9-1,两个整数的“与”操作。,main(),int a=5,b=6;,int c=-5,d=-6;,int x,y;,x=a,y=c,printf(,n%d,%d,x,y);,该程序运行的结果为:,4,-6,7,9,1,位运算的类型,按位“与”运算,说明:,5,的二进制数是,00000101,6,的二进制数是,00000110,那么,a&b,的结果为,4,,如下式所示。,00000101 (5),(&)00000110 (6),00000100 (4),而,-5,的二进制数补码是,11111011,,,-6,的二进制数补码是,11111010,,因此,c&d,的结果为,-6,,如下式所示。,11111011 (-5),(&)11111010 (-6),11111010 (-6),8,9,1,位运算的类型,按位“与”运算,按位“与”运算常用于,位清零,。欲将一个变量的某些位清零,只要同另一个相应位为其余位为的数进行“与”运算即可。,同理,要,提取某个数的一些位,,只要将其同另一个相应位为而其余位为的数进行“与”运算即可。,9,9,1,位运算的类型,按位“或”,按位“或”运算符“,|”,是双目运算符,其功能是参与运算的两数从低位到高位对应的位相或,“或”操作规定为:,0|0,的结果为,0,,,1|1,、,1|0,及,0|1,的结果都为,1,。,10,9,1,位运算的类型,按位“或”,按位“或”运算常用来对数据的某些位置,1,。假设,int,型变量,a,的值为,20000,,它对应的,16,位二进制数是,0100111000100000,,表达式,a|255,的结果是变量,a,对应数值的低,8,位全置为,1,,高,8,位保留原样。如下式所示。,0100111000100000 (20000),(|)0000000011111111 (255),0100111011111111 (20223),从上例中可以看出,,如果要使某个数的一些位变成,1,,可以让这些位按位与,1,进行“或”运算,其它位则分别与,0,相“或”,保持不变,。,11,9,1,位运算的类型,按位“异或”,按位“异或”运算符“”是双目运算符,其功能是参与运算的两数从低位到高位对应位相“异或”,“异或”运算规定:,10,和,01,的结果为,1,,,11,和,00,的结果为,0,。,八进制数,22,与,八进制数,13,按位进行“异或”的算式如下所示。,00010010 (022),00001011 (013),00011001 (031),与,1,进行“异或”运算的位将得到与该位相反的值,,即,10,1,,,11,0,。,与,0,进行“异或”运算的位则保持不变,,即,00,0,,,01,1,。因此,“异或”运算可以方便地将数据的,某些位翻转,,而其它位不变。,12,9,1,位运算的类型,取反,取反运算符“”是,单目运算符,,其功能是对参与运算的数的各二进制位按位求反。例如:,0000000010110010,1111111101001101,13,9,1,位运算的类型,左移,左移运算符“,”,是双目运算符,它的功能是把“,”,左边的运算数的各二进位整体左移若干位,“,”,右边的数则指定移动的位数,左移过程中丢弃移出存储单元的高位数据,低位补,0,。例如:表达式,a”,是双目运算符。其功能是把“,”,左边的运算数的各二进位全部右移若干位,“,”,右边的数指定移动的位数。例如:设,a=15,,,a2,表示把,00001111,右移为,00000011(,十进制,3),。应该说明的是,对于有符号数,在右移时,,符号位将随同移动,。当为正数时,高位补,0,;而为负数时,高位是补,0,或是补,1,取决于编译系统的规定。,Turbo C,和很多系统规定为补,1,。,与左移运算对应的,右移,n,位相当于连续除以,n,个,2,,而且在除,2,时,舍弃小数部分,作取整运算。,正数不断右移结果是,0,,负数不断右移结果是,-1,。,15,9,2,位运算举例,例,9-2,取一个整数,a,从右端开始的,4,7,位。,要取出,a,的,4,7,位,可以使用按位,与,运算,只要将,a,与,0000000011110000,(十进制为,240,)按位与即可,这样,(a&240),的值中,4,7,位保留,a,的原值,而其余位变成了,0,,然后将,(a&240),的值右移,4,位即可。程序如下:,main(),unsigned a,b;,scanf(%u,b=(a,printf(,na,=%u,b=%d,a,b);,16,9,2,位运算举例,在运行时输入,217,,则输出为:,217,a=217,b=13,17,9,2,位运算举例,也可以这样考虑:,(1),先将,a,右移,4,位,使得,4,7,位挪到,0,4,位,这可以通过,a4,做到;,(2),设置一个低,4,位全为,1,,其余位全为,0,的数,可以用下面的方法做到:,(,04,),&,(,0(16-n),(,2,)将,b,的高,16-n,位置,0,:,b&,(,0n,),(,3,)将,a,左移,n,位,其右边,n,位自动补,0,:,c=a(16-n),b=b&(,(,0n);,c=a1,b=16-(1611),第,2,种写法更有技巧性,运行效率更高,不过这种写法要注意左移右移时最高位和最低位的变化。,28,9,4,总结与提高,另外,在嵌入式系统编程中,常用位操作对寄存器进行位设置,达到将其内容清零或屏蔽部分位的作用。,29,下课啦。,休息下。,30,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服