C语言程序设计第12章(位运算).pptVIP

  • 0
  • 0
  • 约3.57千字
  • 约 19页
  • 2019-09-18 发布于湖北
  • 举报
第十二章 位运算;一.位运算符;如: a=15则 ~ a 例12.1 main( ) { int a=0,b=1; printf (“ %d,%d \n”, ~a ,~b ) ; printf (“ %d,%d \n”, !a , !b ) ; } 运行结果: ?-1 , -2 1 , 0;2. (按位与运算) 作用: 对参加运算的两个二进制数逐位进行逻辑与运算。 如: a b 规则: 00 = 0 , 10 = 0 , 01 = 0 , 11 = 1 例如: a =1 , b = -2 , 则: a b = 0 例: main( ) { int a=5,b=12, d; d=ab ; printf(“%d%d=%d\n”, a,b,d); } 输出: 512 = 4 此例说明: a , b 两个操作数参加 运算前后,其值不变。;3. | (按位或运算) 作用: 对参加运算的两个二进制数逐位进行逻辑或 运算。 如: a | b 规则: 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;例 : main ( ) { int a = 3 , b = 4 ; 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 则 a3 结果为 200 ;说明: (1) 左移运算相当于乘 2 运算。 对无符号数,左移 1 位,相当于乘 2 。左移 n 位,则乘 2n 。 (2) 对于用补码表示的正数,如果左移出的全部是 0 ,且移出后的最高位仍是0。 (3) 对于用补码表示的负数,如果左移出的全部是 1,且移出后的最高位仍是 1 。如:;(4) 若非上述情况 ( 如:左移出现溢出时),就不能简单地用 乘 2 来计算. 如: 有??号字符型数 64 , 当它左移 2 位时,结果为 0 。; 6. (右移运算符) 作用: 将操作数的各个二进位顺序右移。左端空出的位补0 或补 1,而移出右端之外的位则舍去. 如: a n 表示将 a 的各个二进位顺序右移 n 位 说明: 右移运算的结果与操作数的符号有关 1) 对无符号数进行右移,左端空出的位一律补 0 。 2) 对用补码表示的有符号数,则随系统而定。 “逻辑右移”空位一律补 0 ; “算术右移”正数右移,空位补 0; 负数右移, 空位补1 。(Turbo C中采用算术右移) ;例如: a = - 32768;二. 1. 位运算符的优先级 结合性: ~ 运算按从右至左 , 其余按从左至右 例: x ~ 077 x ( ~ 077)

文档评论(0)

1亿VIP精品文档

相关文档