1. 在实践中常见的位操作有:
位与(&)、位或(|)、位异或(^)、位取反(~)
分析:
位与(&):二进制数(0或1),与1位与是无变化(本身),与0位于变成0.
位或(|)
:二进制数(0或1),与1位或是变成1,与0位或无变化(本身).
位异或(^):二进制数(0/1),与1位异或是取反,与0位异或无变化。(记忆方法是:相同为0,不同为1)
位取反(~): 二进制数(0/1), 原先是0则变为1,原先是1则变为0。
示例:
位与(&):
0xAA & 0x0F = 0x0A;
位或(|) : 0xAA | 0x0F = 0xAF;
位异或(^) : 0xAA ^ 0x0F =
0xA5;
位取反(~):~0xAA =
0x55;
2. 左移位<<
与右移位>>
C语言的移位要取决于数据类型
对于无符号数,左移时右侧补0(相当于逻辑移位)
对于无符号数,右移时左侧补0(相当于逻辑移位)
对于有符号数,左移时右侧补0(叫算术移位,相当于逻辑移动)
对于有符号数,右移时左侧补符号位(正数补0,负数补1,算术移位)
3.
位与位或位异或在操作寄存器时的特殊作用
寄存器操作的要求(特定位改变而不影响其他位)