【算法/位运算】常见位运算总结+刷题路线(7题)

有符号整数与无符号整数

有符号整数中,最高位用于表示符号,因此最高位又称符号位。
以1字节数为例(1字节包含8位二进制数):
有符号:-128(-2^7)-> -1 -> 0 -> 127(2^7-1)
无符号:0 -> 255(2^8-1)

原码、补码和反码

位运算符总结

位运算符 符号 示例 左移 << 0011 << 1 = 0110 右移 >> 0011 >> 1 = 0011 按位与 & 0011 & 1011 = 0011 按位或 | 0011 | 1011 = 1011 按位取反 ~ ~0011 = 1100 按位异或 ^ 0011 ^ 1011 = 1000

异或特点总结

1.x^0 = x
2.x^(~0) = ~x
3.x^(~x) = (~0)
4.x^x = 0
5.c = a^b ---> a^c = b,b^c = a
6.a^b^c = a^(b^c) = (a^b)^c

常见位运算总结

1.将x最右边的n位清零:x&(~0 << n)
2.获取x的第n位值(0或者1):(x>>n)&1
3.获取x的第n位的幂值:x&(1<<(n-1))
4.仅将第n位置为1:x|(1<<n)
5.仅将第n位置为0:x&(~(1<<n))
6.将x最高位至第n位(含)清零:x&((1<<n)-1)
7.将第n位置第0位(含)清零:x&(~(1<<(n+1)-1))
8.判断奇偶:x%2 == 1  --> (x&1) == 1
		   x%2 == 0  --> (x&1) == 0
9.二分:x/2 == x >> 1
10.清零最低位的1: x = x&(x-1)
11.得到最低位的1:x& (-x)
12.x&(~x) = 0

刷题路线

路线图

题目链接

经验分享 程序员 微信小程序 职场和发展