bit 位操作及其算法应用
基本操作
与: 1 & 1 = 1 、 1 & 0 = 0 、 0 & 0 = 0
或:1 | 1 = 1 、 1 | 0 = 1 、0 | 0 = 0
非: ~1 = -2 、 ~1 + 1 = -1(取反 + 1)
异或操作
可以理解为 无进位相加,也可以理解为获取比特中不匹配的位
1、N ^ N = 0
2、N ^ 0 = N
3、无序性 A ^ B ^ C = C ^ B ^ A = C ^ A ^ B
4、得到最右侧的1: X & (-X)
位移操作
<<:带符号左移,高位移出,低位补0,左移n位相当于乘以2的n次方
>>:带符号右移,高位补符号位(左移n位等于除以2的n次方并取整数部分)
>>>:无符号位移,高位始终补0,主要对于负数处理有意义,对于正数,等价于 >>
奇偶判断
奇数:N & 1 = 1
偶数:N & 1 = 0
应用案例
通过与、异或操作完成两个数字相加
判断一个数字是否是2次幂:
位运算广泛应用于布隆过滤器、八皇后问题、GA遗传算法等领域,除了是对问题抽象的一种思路,使用比特位来解决能够提升问题求解的效率
评论