高二高教版C语言程序设计教程(第5版)课件第12章位运算

2022-12-02
| 7页
| 129人阅读
| 11人下载
普通

内容正文:

第12章 位运算 12.1 位运算符 运算符 含义 示例 运算功能 & 按位与 a&b 若a与b相应位都为1,该位结果为1 | 按位或 a|b 若a与b相应位都为0,该位结果为0 ^ 按位异或 A^b 若a与b相应位相同,该位结果为0 ~ 取反 ~a 若a的相应位为1,该位结果为0 << 左移 a<<2 将a的二进制数左移2位,右补0 >> 右移 a>>2 将a的二进制数右移2位,左补0或1 12.2 位运算符的功能 12.2.1 按位与运算(&) 运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1 例如: 已知a=0x1234, b=0x00ff 求 c=a&b a 0001 0010 0011 0100 & b 0000 0000 1111 1111 c 0000 0000 0011 0100 12.2.2、 按位或运算(|) 运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1 例如: 已知a=0x1234, b=0x00ff 求 c=a|b a 0001 0010 0011 0100 | b 0000 0000 1111 1111 c 0001 0010 1111 1111 12.2.3 按位异或运算(^)或 运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0 例如: 已知a=0x1234, b=0x00ff 求 c=a^b a 0001 0010 0011 0100 ^ b 0000 0000 1111 1111 c 0001 0010 1100 1011 12.2.4 按位取反运算(~) 运算规则:~0=1; ~1=0 例如: 已知a=0x1234 求 c= ~a ~ a 0001 0010 0011 0100 c 1110 1101 1100 1011 12.2.5 按位左移(<<) 公式: a=a<<n 运算规则:将a各位左移n位,低位补零,进位舍弃 例如: 假设机器字长为8位, 已知a=16 求 a=a<<2 a=0001 0000<<2=0100 0000=64 12.2.6 按位右移(>>) 公式: a=a>>n 运算规则:将a各位右移n位,低位移出, 高位补零(无符号数)或按符号位补齐 例如: 假设机器字长为8位, 已知a=16,b=-16 求 a=a>>2; b=b>>2 a=0001 0000>>2=0000 0100=4 b=1111 0000(补码)>>2=1111 1100=4(补码) 12.2.7复合位赋值运算符 &=; |=; ^=; ~=; <<=; >>= 优先级: 仅高于逗号运算符 结合性: 自右向左 例如: a&=b 相当于: a=a&b a|=b 相当于: a=a|b 8、举例 取一个整数a从右端开始的5~8位 分析:(1)将a右移5位, b=a>>5 (2)设置一个低四位为1,其余位为0的数, c=~(~0<<4) (3)将b和c进行&运算, d=b&c 程序如下: main() { unsigned a,b,c,d; scanf(“%o”,&a); b=a>>5; c=~(~0<<4); d=b&c; printf(“%o %o ”,a,d); } back 语句:printf(“%d ”,12&012) ;的输出结果是( )。 A. 12 B. 8 C. 6 D. 012 2. 以下程序的输出结果是( )。 main() { int x=0.5; char z='a'; printf("%d ", (x&1)&&(z<'z') ); } A. 0 B. 1 C. 2 D. 3   $

资源预览图

高二高教版C语言程序设计教程(第5版)课件第12章位运算
1
高二高教版C语言程序设计教程(第5版)课件第12章位运算
2
高二高教版C语言程序设计教程(第5版)课件第12章位运算
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。