位运算

位运算提供了可以直接针对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 
原文地址:https://www.cnblogs.com/ply616/p/5804417.html