Bit Manipulation 位运算

1. << : 左移运算符,num << 1,相当于num乘以2 低位补0 2. >> : 右移运算符,num >> 1,相当于num除以2 高位补0 3. >>> : 无符号右移,忽略符号位,空位都以0补齐 4. % : 模运算 取余 5. ^ : 位异或 第一个操作数的的第n位于第二个操作数的第n位相反,那么结果的第n为也为1,否则为0 6. & : 与运算 第一个操作数的的第n位于第二个操作数的第n位如果都是1,那么结果的第n为也为1,否则为0 7. | : 或运算 第一个操作数的的第n位于第二个操作数的第n位 只要有一个是1,那么结果的第n为也为1,否则为0 8. ~ : 非运算 操作数的第n位为1,那么结果的第n位为0,反之,也就是取反运算(一元操作符:只操作一个数)

Java Bit-shifting circular?

a << 32 == a; // true, why? 因为实际上相当于 你输入的移动位数要 %32 即 a << (b%32)
a << 32 & 0x1f;

LC 136 LC 137

出奇迹: 268

Swap

注意要避免 a == b 的swap,否则就坏了。
交换 a,b
a = a^b;
b = a^b; (a^b)^b = a
a = a^b; (a^b)^((a^b)^b) = (a^b)^a = b 

Last updated

Was this helpful?