十一章位运算ppt课件.ppt

上传人:本田雅阁 文档编号:2636180 上传时间:2019-04-25 格式:PPT 页数:21 大小:430.01KB
返回 下载 相关 举报
十一章位运算ppt课件.ppt_第1页
第1页 / 共21页
十一章位运算ppt课件.ppt_第2页
第2页 / 共21页
十一章位运算ppt课件.ppt_第3页
第3页 / 共21页
十一章位运算ppt课件.ppt_第4页
第4页 / 共21页
十一章位运算ppt课件.ppt_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《十一章位运算ppt课件.ppt》由会员分享,可在线阅读,更多相关《十一章位运算ppt课件.ppt(21页珍藏版)》请在三一文库上搜索。

1、第十一章 位运算,本章要点: 掌握C语言的位运算符 能够使用位运算符进行基本位运算 了解C语言的位运算的一些应用实例 了解位段的基本概念,位运算是指进行二进制位的运算,即对字节或字节内 部的二进制位进行运算。为了便于计算机的运算,计算机中是以补码形式来存放数的。 一、位运算符 用于有符号和无符号的整型数。 包括: char short int long unsigned 。 位运算符共 6 种: & | ,1. (按位取反运算符) 作用: 对一个二进制数逐位取反,如: a = 15 则 a,例11.1 main ( ) int a = 0 , b = 1 ; printf ( “ %d , %

2、d n”, a ,b ) ; printf ( “ %d , %d n”, !a , !b ) ; printf ( “ %d , %d n”, a , b ) ; ,实例,实例,注意: 运算和 ! 运算的区别。 的优先级与 + + , , !同级,结合性从右至左。,注意事项,重点,运行结果: 1 , 2 1 , 0 0 , 1,注意,例11.1 main ( ) int a = 0 , b = 1 ; printf ( “ %d , %d n”, a ,b ) ; printf ( “ %d , %d n”, !a , !b ) ; printf ( “ %d , %d n”, a , b

3、) ; 运行结果: 1 , 2 1 , 0 0 , 1, 运算和 ! 运算的区别。 的优先级与 + + , , !同级,结合性从右至左。,重点,2. & (按位与运算) 作用: 对参加运算的两个二进制数逐位进行逻辑与运算, 如: a & b 规则: 0&0 = 0 , 1&0 = 0 , 0&1 = 0 , 1&1 = 1 例如: a = 1 , b = 2 , 则: a & b = 0,例: main( ) int a = 5 , b = 12 , d ; d = a 输出: 5&12 = 4,3. | (按位或运算) 作用: 对参加运算的两个二进制数逐位进行逻辑或运算 如: a | b 规

4、则: 0 | 0 = 0 , 1 | 0 = 1 , 0 | 1 = 1 , 1 | 1 = 1 例如: a = 1 , b = 1 , 则: a | b = 1。,4. (按位异或运算) 作用: 对参加运算的两个二进制数逐位进行逻辑异或运算 如: a b 规则: 0 0 = 0 , 1 0 = 1 , 0 1 = 1 , 1 1 = 0,例如: a = 15 , b = 0 , 则: a b = 15,00001111,00000000,00000000,00000000,00001111,00000000,a,b,a b,结论,例 : main ( ) int a = 3 , b = 4

5、; a = a b ; b = b a ; a = a b ; printf ( “ %d , %d ” , a , b ) ; 输出: 4 , 3,利用异或运算,不必设置第三个变量就可以实现两个变量值的交换。,重点,5. (左移位运算) 作用: 将操作数的各个二进位顺序左移。右端空出的位补0 , 而移出左端之外的位则舍去。 如: a n 表示将 a 的各个二进位顺序左移 n 位( n 为正整数)。 例如: a = 25 则 a 3 结果为 200,补充说明,6. (右移运算符) 作用: 将操作数的各个二进位顺序右移。左端空出的位补0 或补 1 ,而移出右端之外的位则舍去。 如: a n 表示

6、将 a 的各个二进位顺序右移 n 位,说明,右移运算的结果与操作数的符号有关 对无符号数进行右移,左端空出的位一律补 0 。 对用补码表示的有符号数,则随系统而定。即 “ 逻辑右移 ” 空位一律补 0 。 “ 算术右移 ” 正数右移,空位补 0 。 负数右移,空位补 1 。,Turbo C 中采用算术右移,例如: a = 32768,算术右移运算相当于除 2 运算。右移 1 位相当于除 2。 右移 n 位 ,则除 2n 。,二、 1. 位运算符的优先级,& |,高,低,结合性: 运算按从右至左 , 其余按从左至右。,例: x & 077 x & ( 077) x 2 & y 2 )& (y 3

7、 ),2. 复合赋值运算 & = , | = , = , = 如: a & = b a = a & b a = m + 1 a = a m + 1,三、位运算的应用 例11.1 将整数 x 的后 6 位全置 0 ,其余位不变。 取 y = 0177700 或 y = 077 ( 八进制数 ) 则 x 如输入: 256 输出为: x = 400 ( 8 进制 ) 同样,如将 x 的后 6位全置1 , 则只需将x = x | 077 即可。,例11.2 取一整数 a 从右端开始的 4 7 位。,(1) 先使 a 右移 4 位 a ( 7 4 + 1 ) 即 a 4 (2) 设置一个低 4位全为 1

8、,其余位全为 0 的数。 ( 0 4 & ( 0 4 ),结论,void main ( ) unsigned a , b , c , d ; scanf (“ %o” , ,如输入: 331 输出为: 331 15,结论,任意指定从右端 m 位 开始,取其右面的 n 位。 只需: b = a ( m n + 1 ) c = ( 0 n ) d = b & c,例11.3 将一个整数 a 循环右移 n 位。 所谓循环右移是将 a 最右端的位顺序移到 a 的最左端,而将 a 中原 左端的各位顺序右移到最右端。,右移 2 位,(1) 将 a 左移 16 n 位并存入变量 b 中,这样 b 中最左端 的 n 位就是原 a 最右端的 n 位, 而 b 中最右端 (16 n )位全为 0 。 b = a n (3) 将 c 与 b 按位或运算 c = c | b,void main ( ) unsignde a , b , c ; int n ; scanf ( “ %o , %d ” , 如输入: 157653 , 3 输出为: 157653 75765 同样可以实现循环左移。,作业 P308 12.1 12.2 12.3,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1