c第2版(第11章_位运算)

c第2版(第11章_位运算)

ID:19867483

大小:1.07 MB

页数:20页

时间:2018-10-07

c第2版(第11章_位运算)_第1页
c第2版(第11章_位运算)_第2页
c第2版(第11章_位运算)_第3页
c第2版(第11章_位运算)_第4页
c第2版(第11章_位运算)_第5页
资源描述:

《c第2版(第11章_位运算)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C语言程序设计教程(第2版)第11章位运算本章主要内容1.按位取反运算2.按位左移运算3.按位左移运算4.按位与运算5.按位或运算6.按位异或运算7.复合位运算第11章位运算11.1位运算符C既具有高级语言的特点,又具有低级语言的功能,位运算能力就是其特色之一。所谓位运算就是指进行二进制位的运算。C提供的位运算符有:运算符含义&按位与¦按位或按位异或~取反<<左移>>右移说明:位运算符中除“~”外,其余均为二目运算符,即要求两侧各有一个运算量。运算量只能是整型或字符型的数据,不能为实型数据。11.2“按位与”运算

2、符&参加运算的两个运算量之对应位都为1,则该位的结果为1,否则为0。即:0&0=00&1=01&0=01&1=1例:3&5=13的补码:000000115的补码:00000101&00000001&运算符的用途:清零如果想将一个单元清零(全部二进位为),则只要找一个数的补码的对应位0与被清零数的对应位1刚好对应,然后使两者进行&运算。如:00101011&1001010000000000取一个数中的某些指定位如:a:0010110010101100b:0000000011111111(377)8&00000000

3、10101100得到a的低8位保留一个数的某一位如:01010100(84)10&00111011(59)1000010000(16)1011.3“按位或”运算符¦参加运算的两个运算量之对应位只要有一个为1,则该位的结果为1。即:0¦0=00¦1=11¦0=11¦1=1如:00110000(060)8¦00001111(017)800111111(077)8即一个数与017进行按位或运算,就可将该数的低4位全置为1;与0377进行按位或运算,就可将该数的低8位全置为1。11.4“异或”运算符参加运算的两个运算量的对

4、应位相同,则该位的结果为0。否则为1。即:00=001=110=111=0如:00111001(57)10、(071)800101010(42)10、(052)800010011(19)10、(023)8运算符的用途:使指定的位翻转如:0111101000001111对应原数的低4位均置为101110101原数的低4位被翻转若a=3,b=4。则a=ab;b=ba;a=ab;结果是什么?交换两个值,不用临时变量例如:a=3,b=4。想将a和b的值互换,可以用以下赋值语句实现:a=a∧b;b=b∧a;a

5、=a∧b;a=011(∧)b=100a=111(a∧b的结果,a已变成7)(∧)b=100b=011(b∧a的结果,b已变成3)(∧)a=111a=100(a∧b的结果,a已变成4)11.5“取反”运算符~~运算是对一个二进制数按位取反,即将0变为1,1变为0。8位全1用377;16位全1用177777;32位全1用37777777777。11.6“左移”运算符<<<<用来将一个数的各二进制位全部左移若干位,并在右边补若干个0。高位左移后溢出,舍弃不起作用。如:<<运算的最大用途是做乘法运算。将乘以2n的幂运算处理为左

6、移n位。11.7“右移”运算符>>>>用来将一个数的各二进制位全部右移若干位,移到右边的低位被舍弃,对无符号数,高位补0。如:a为00001111,则a>>2为0000001111右移一位相当于除以2,右移n位相当于除以2n。(此2位被舍弃)注意:在右移时,需要注意符号位问题。若为无符号数,右移时左边高位移入0。若为有符号数,如果原来符号位为0(正数),则左边移入0;如果原来符号位为1,左边移入0的称为“逻辑右移”,移入1的称为“算术右移”。大多数C语言均采用算术移位。如:a:1001011111101101(1137

7、55)8a>>1:0100101111110110逻辑右移,得045766a>>1:1100101111110110算术右移,得14576611.8程序范例例11.1取一个整数a从右端开始的4~7位。步骤:先使a右移4位。即:a>>(7–4+1)a>>4设置一个低4位全为1,其余全为0的数。即:~(~0<<4)将两者进行&运算未右移时的情况右移4位后的情况#includemain(){unsigneda,b,c,d;scanf("%o",&a);b=a>>4;/*b=a>>(m-n+1)*/c

8、=~(~0<<4);/*c=~(~0<>n;将c与b进行按位或运算。c=c¦bmain(){

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。