1.按位与 &
用途:取(或保留)一个数的某些位,其余位置为0
移位操作 :mask = 0xf << n
清零操作 :mask = ~(0xf << n)
2.按位或 |
用途:将一个数的某些位置置1 ,其余各位不变
0xf << n(4位写1)
3.按位异或^
用途 :使一个数的某些位置翻转或者取反(原来的1变为0 ,原来的0变为1),其余位不变
交换a和b的值的方法: 1) a = a^b; b=a^b; a = a^b;
2) a = a+b; b = a - b; a = a - b;
4.按位取反 ~
用途: 间接的构造一个数,以增强程序的可移植性
例如: 32写1 : ~0x0
5. 按位左移 <<
规则: 左移n位 相当于 乘上2的n次方
6. 按位右移 >>
规则 :低位舍弃,高位分情况
对于正数 ,补上0
对于有符号的负数,补0称为逻辑右移,补1称为算术右移,成为符号位扩展
不同长度数据间的位运算(低字节对齐,高字节补位,规则用符号位扩展的规则)
位段:
1)标志为0意味着从下一个字节开始存储
2)将一个字节分为八位存储
3) 使用结构体