C语言程序设计课件位运算.ppt
《C语言程序设计课件位运算.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计课件位运算.ppt(34页珍藏版)》请在三一文库上搜索。
1、2019/2/21,位运算,课程:程序设计语言 教材:谭浩强C程序设计第三版 讲授:陈慧炜,2019/2/21,本章重点,6种基本位运算符的使用及其功能 位运算符的综合使用 位段的理解和应用,2019/2/21,请写出47的二进制形式,请写出-47的二进制数形式,提示: 1、在计算机中,数值一律以补码表示 2、绝对值相同的数,原码除符号位外都相同 3、正数的补码、原码、反码相同 4、负数的补码,是原码的反码加1,注意:最高位是符号位,1表示负数,0表示正数,整数的二进制表示,2019/2/21,整数的二进制表示,求负数-47的补码 原码: 反码: 补码:,2019/2/21,位与字节,高 低
2、一个字节由8个二进制位(bit)构成,一个位的取值为0或1。最右端的那一位是“最低位”,编号为0;最左端的那一位称为“最高位”,是符号位,从最低位到最高位按顺序依次编号。,2019/2/21,位运算符,1、按位与(&) 0&0=0,0&1=0,1&1=1 该位只要有一个0便为0 计算: 00000011 (3) & 00000101 (5),(-3) ? &(-5) ? ?,00000001 (1),2019/2/21,按位与的用途,(1)清零(用0相&) 11011001 & 11110000 11010000 (2)保留指定位(用1相&) 01010100 & 00111011 00010
3、000 (3)用来检测某个位是否置位(用1相&),2019/2/21,例:有一数据b,想测试其第4位是否为1? 分析: 1.位号是从右向左数的 2. 设置一个只有第4位为1的二进制数a:00010000,与b进行与运 算,如果结果为00010000,则第4位为1;反之结果为00000000,则第4位为0。,2019/2/21,2、按位或(|),0|0=0,0|1=1,1|1=1 该位只要有一个1便为1 按位或的用途: (1)置位:用1去跟某些位或,使某些位为1,如: 11011001 | 00001111 11011111 (2)保留原位:用0去跟某些位或,如上例前4位,2019/2/21,3
4、、异或(),00=0,01=1,11=0 异号为1(真),同号为0(假) 异或运算符的用途: (1)任何数与本身异或,则为0 10101111 10101111 00000000 (2)与0异或,则保留原值。 10101111 00000000 10101111,2019/2/21,(3)与-1异或,相当于将各位取反(因为-1的每个位都为1)。 10101111 11111111 (-1) 01010000 (4)特定位翻转。将需要翻转的位与1异或即可。 01111010 00001111 01110101,2019/2/21,(5)交换两个值,不用临时变量。 例:a=3,b=4,将a和b的值
5、互换,可以用以下赋值语句实现: a=ab;b=ba;a=ab; a=011 b=100 a=111 b=100 b=011 a=111 a=100 最后,a=100 (4) b=011 (3) 实现了交换,2019/2/21,2019/2/21,4、取反(),0=1,1=0 举例:使16位整数a最低位为0 分析: a&1111111111111110 保留前15位,将最低位清零; 1111111111111110这个数值为多少,较难运算; 1111111111111110 =0000000000000001 0000000000000001的值较为简单,就是1; 所以可以用:a=a&1的表达式
6、达到要求。,2019/2/21,5、左移运算符(),左移n位,右补n个0。 左移n位相当于乘以2n,左移位运算速度比乘法快。 但是,左移位可能溢出,实际结果不会超出指定的整数类型的值域。 unsigned char x = 37 3 ; 00100101 (37) 3 00101000 (40),2019/2/21,6、右移运算符(),右移n位相当于除以2 n,右移位运算速度比除法快。 00001111 2 00000011 注意: 无符号数:右移时左边补0; 有符号数:非负整数右移位时左边补0; 负整数逻辑右移:左边补0; 算术右移:左边补1,2019/2/21,检查一下你所用的计算机系统的
7、C编译系统执行的是逻辑右移还是算术右移: 程序代码: #include void main( ) int a=0,b; b=a1; if(b=a)printf(“算术右移!n”); else printf(“逻辑右移!n”); 若b仍为0,则表明采用的是算术右移,反之为逻辑右移。,2019/2/21,位运算符功能总结,清位(置0):跟0(若非说明,指指定位的值)相& 置位(置1):跟1相| 检测某位是否为1:跟1相& 保留原位:跟1相&,或者跟0相| 翻转某位:跟1相,2019/2/21,位运算综合运用举例,例12.1:取一个整数a从右端开始的47位。,在中间取位比较麻烦,最好将该4位移到最低
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 课件 运算
链接地址:https://www.31doc.com/p-2143081.html