&(按位与)
- 一个数&1结果为该数二进制表示中的最末位,可用于判断该数奇偶,0为偶数,1为奇数。
|(按位或)
^(按位异或)
- 相同为0,不同为1
- 优先级:& > ^ > |
~(按位取反)
<<(按位左移)
- a << b(a * 2^b):a转成二进制后左移b位,右边用0填充
- a << 1 比 a * 2 效率更高
- (1 << 32) - 1 表示unsigned int最大值(2^32 - 1)
>>(按位右移)
- a >> b(a / 2^b):a转成二进制后右移b位,若a为有符号型,左边用符号位填充;若a为无符号型,则左边用0填充。
- 用a >> 1 代替 a / 2 效率更高。
- a >> 1 表示去掉a二进制最后一位。
把一个整数减去1之后再和原来的整数做位与运算,得到的结果相当于把整数的二进制表示中最右边的1变成0,很多二进制的问题都可以用这种思路解决。
4万+

被折叠的 条评论
为什么被折叠?



