位运算
位运算提供了可以直接针对bit进行形象上的操作。
- 与
&
规则:相当于乘法,全1位1.
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
- 或
|
规则:全0为0
0 | 0 = 0
0 | 1 = 1
1 | 0 = 1
1 | 1 = 1
既然是位运算,少不了要给某一位写1,以及清除某一位上的数据。
假设有数据A.
给第n位写1:A | (1 << n )
清除第n位:A & ~(1 << n)
- 异或
^
规则:半加运算,即加法不进位(布尔环)
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0
对于一个8bit数 A,有:
A ^ 0x00 = A
A ^ A = 0x00
A ^ 0xFF = ~A
A ^ (~A) = 0xFF
如果有两个数:A B
有:
A ^ B = C
A ^ C = A ^ ( A ^ B ) = A ^ A ^ B = 0x00 ^ B = B
所以,实现两个参数的互换会看到:
A ^= B
B ^= A
A ^= B
-
取反
~
-
移位操作
-
左移
<<
对于在可接受的范围内:相当于乘以2
A << N = A*2^N
- 右移
>>
对于在可接受的范围内:相当于除以2.
A >> N = A/2^N