位运算常用操作

符号 描述 运算规则
& 两个位都为1时,结果才为1
| 两个位都为0时,结果才为0
^ 异或 两个位相同为0,相异为1
~ 取反 0变1,1变0
<< 左移 各二进位全部左移若干位,高位丢弃,低位补0

|右移|各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)
java中独有的>>>, (无符号右移)无论是正数还是负数,高位通通补0

常用操作 lowbit

lowbit: n & (n - 1) 消去当前数字最右边的1


交换两数

a ^= b;
b ^= a;
a ^= b;

位运算通常要比一般的运算符速度快,因此可用
x >>= 1代替 除2
x <<= 1代替 乘2
x & 1 代替 x % 2

原文地址:https://www.cnblogs.com/whisperbb/p/12677144.html