T10. Bit Manipulation
关于 >>
和 >>>
的区别:
>>
如果是负数,最高位填充1
>>>
不管正的负的,最高位都填充0
位运算奇技淫巧:
关于位取反运算:~x
等价于 (-x) - 1
。于是 A - B
可以写成:A + ~B + 1
。
还有,x & (x-1)
可以判断 x
是否是 2 的幂。神奇吧?比 popcount()
快!
还有,两个数相加,可以写成:
关于 >>
和 >>>
的区别:
>>
如果是负数,最高位填充 1
>>>
不管正的负的,最高位都填充 0
关于位取反运算:~x
等价于 (-x) - 1
。于是 A - B
可以写成:A + ~B + 1
。
还有,x & (x-1)
可以判断 x
是否是 2 的幂。神奇吧?比 popcount()
快!
还有,两个数相加,可以写成: