位运算
位运算就是计算机用二进制来与计算,并不需要我们自己将该数转换成二进制
位运算基础:
- & 按位与
- | 按位或
- ^ 按位异或
- ~ 取反
- << 左移
用来将一个数的各二进制位全部左移N位,右补0 -
右移
将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数, 高位补0
奇技淫巧
应用一 用O(1)时间检测整数n是否是2的幂次.
思路解析:N如果是2的幂次,则N满足两个条件。
- N>0
- N的二进制表示中只有一个1
一位N的二进制表示中只有一个1,所以使用N&(N-1)将唯一的一个1消去。
如果N是2的幂次,那么N&(N-1)得到结果为0,即可判断。
应用二 计算在一个 32 位的整数的二进制表示中有多少个 1.
思路解析:
由 x & (x-1) 消去x最后一位知。循环使用x & (x-1)消去最后一位1,计算总共消去了多少次即可。
技巧三.abb=a