一直忽略的是它们的用处,先回顾一下位操作符的基础。
与操作:&
1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
或操作:!
1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 & 0 = 0
异或:^
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0
注:假定 A = 60; B = 13; 其二进制数转换为:
A = 0011 1100
B = 0000 1101
—————–
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
——————————————————————–
左移:<< 符号位不变,低位补0
1 << 1 = 2
1 << 2 = 4
1 << 3 = 8
简单介绍一种方便计算的方法:
1 << 1的值为1*2=2
1 << 2的值为1*(2^2)=4
1 << n的值为1*(2^n)
右移:>> 低位溢出,符号位不变,并用符号位补溢出的高位
2 >> 1 = 1
4 >> 2 = 1
8 >> 3 = 1
简单介绍一种方便计算的方法:
2 >> 1的值为2/2=2
4 >> 2的值为4/(2^2)=4
8 >> n的值为8/(2^n)
注:左右移也是对数据的二进制操作
2 的 二进制为:0010
左移两位为: 1000 (这样操作的 001000 即在整体向左移动两位,最右边(低位)用0补两位)
结果: 2 << 2 = 8