运算符
按位与(&)
1&3 = 1 // 0001 & 0011 = 0001
按位或(|)
9|3=11 // 1001 & 0011 = 1011
按位异或(^)
9^3 = 10 // 1001 & 0011 == 1010
按位非(~)
1; // 二进制 00000000000000000000000000000001
~1 = 111111111111111111111111111110
有符号左移(<<)
1 << 1 = 2 // 00000000000000000000000000000001<<1 = 00000000000000000000000000000010
-1 << 1 = - 2 // 111111111111111111111111111111 << 1 = 111111111111111111111111111110
有符号右移(>>)
1 >> 1 = 0 // 00000000000000000000000000000001 >>1 = 00000000000000000000000000000000
-2>>1 = -1 //111111111111111111111111111110 >> 1 = 111111111111111111111111111111
-1>>1 = -1 // 111111111111111111111111111110 >> 1 = 111111111111111111111111111111
应用场景
判断一个节点在一个八分空间中的位置
1 | switch (i = (z < (z0 + z1 / 2)) << 2 | (y < (y0 + y1) / 2) << 1 | (x < (x0 + x1) / 2)) { |