位运算可能在平常的编程中使用的并不多,但涉及到底层优化,一些算法及源码可能会经常遇见。
位运算简单介绍:
- 位与. &
- 位或. |
- 异或. ^
- 左移. <<
- 右移. >>
与操作:&
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
左移:<<
//右边空出的位用0填补
4 << 1 = 8
//步骤:
4:0000 0100
4<<1:0000 1000
0000 1000:8
右移:>>
//左边空出的位用0或者1填补
4 >> 1 = 2
//步骤
4:0000 0100
4>>1:0000 0010
0000 0010:2
举例几个用处:
1.使用&来判断一个数字是奇数还是偶数:num&1 == 1
2.使用^来判断两个数字是否为同号:(a ^ b) >= 0
3.使用|来设置位数:a |= num