C语言程序设计教程(第二版)第11章位运算PPT教学课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第11章 位运算
11.1 位运算符
运算符 & | ^ ~ << >>
含义 按位与 按位或 按位异或
取反
右移
示例 a&b a|b A^b ~a a<<2 a>>2
运算功能 若a与b相应位都为1,该位结果为1 若a与b相应位都为0,该位结果为0 若a与b相应位相同,该位结果为0 若a的相应位为1,该位结果为0 将a的二进制数左移2位,右补0 将a的二进制数右移2位,左补0或1
11.2.7复合位赋值运算符
&=; |=; ^=; ~=; <<=; >>= 优先级: 仅高于逗号运算符 结合性: 自右向左
2020/12/10
例如: a&=b 相当于: a=a&b a|=b 相当于: a=a|b
5
PPT教学课件
谢谢观看
Thank You For Watching
6
2020/12/10
1
11.2 位运算符的功能 11.2.1 按位与运算(&)
运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1
例如: 已知a=0x1234, b=0x00ff 求 a&b
a &b
c
0001 0010 0011 0100 0000 0000 1111 1111 0000 0000 0011 0100
2020/12/10
2
11.2.2、 |按位或运算(|) 运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1
例如: 已知a=0x1234, b=0x00ff 求 a|b
a 0001 0010 0011 0100 | b 0000 0000 1111 1111
c 0001 0010 1111 1111
a=0001 0000<<2=0100 0000=64
2020/12/10
4
11பைடு நூலகம்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(补码)
3
11.2.4 按位取反运算(~) 运算规则:~0=1; ~1=0
例如: 已知a=0x1234 求 c= ~a
~ a 0001 0010 0011 0100 c 1110 1101 1100 1011
11.2.5 按位左移(<<)
公式:
a=a<<n
运算规则:将a各位左移n位,低位补零,进位舍弃
例如: 假设机器字长为8位, 已知a=16 求 a=a<<2
11.2.3 按位异或运算(^)或
运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0
例如: 已知a=0x1234, b=0x00ff 求 a^b
a 0001 0010 0011 0100
^ b 0000 0000 1111 1111
2020/12/10
c 0001 0010 1100 1011
11.1 位运算符
运算符 & | ^ ~ << >>
含义 按位与 按位或 按位异或
取反
右移
示例 a&b a|b A^b ~a a<<2 a>>2
运算功能 若a与b相应位都为1,该位结果为1 若a与b相应位都为0,该位结果为0 若a与b相应位相同,该位结果为0 若a的相应位为1,该位结果为0 将a的二进制数左移2位,右补0 将a的二进制数右移2位,左补0或1
11.2.7复合位赋值运算符
&=; |=; ^=; ~=; <<=; >>= 优先级: 仅高于逗号运算符 结合性: 自右向左
2020/12/10
例如: a&=b 相当于: a=a&b a|=b 相当于: a=a|b
5
PPT教学课件
谢谢观看
Thank You For Watching
6
2020/12/10
1
11.2 位运算符的功能 11.2.1 按位与运算(&)
运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1
例如: 已知a=0x1234, b=0x00ff 求 a&b
a &b
c
0001 0010 0011 0100 0000 0000 1111 1111 0000 0000 0011 0100
2020/12/10
2
11.2.2、 |按位或运算(|) 运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1
例如: 已知a=0x1234, b=0x00ff 求 a|b
a 0001 0010 0011 0100 | b 0000 0000 1111 1111
c 0001 0010 1111 1111
a=0001 0000<<2=0100 0000=64
2020/12/10
4
11பைடு நூலகம்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(补码)
3
11.2.4 按位取反运算(~) 运算规则:~0=1; ~1=0
例如: 已知a=0x1234 求 c= ~a
~ a 0001 0010 0011 0100 c 1110 1101 1100 1011
11.2.5 按位左移(<<)
公式:
a=a<<n
运算规则:将a各位左移n位,低位补零,进位舍弃
例如: 假设机器字长为8位, 已知a=16 求 a=a<<2
11.2.3 按位异或运算(^)或
运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0
例如: 已知a=0x1234, b=0x00ff 求 a^b
a 0001 0010 0011 0100
^ b 0000 0000 1111 1111
2020/12/10
c 0001 0010 1100 1011