位运算符
右移运算符: >>
数的二进制各位向右移动1位,空出来的位置用0补充,超过边界的位置被删除,相当于一个数除以2。
左移运算符: <<
数的二进制各位向左移动1位,空出来的位置用0补充,超过边界的位置被删除,相当于一个数乘2.
在一些系统上,使用左移右移运算符实现乘除二会比用乘除运算符运行更快,但是随着编译器代码优化越来越来,这种差异在缩小。
逻辑按位运算符:
按位或运算符OR(|):对两个整数值进行操作,生成一个新整数值,如果被操作的两个值的对应位至少有一个1,则新值对应位为1,否则为0.
0 1 0 0 1 0 1 0 (A)
0 1 0 0 0 1 0 0 (B)
0 1 0 0 1 1 1 0(A | B)
按位与运算符AND(&):将两个新值结合起来,生成一个新的整数值,如果原始值中对应位都为1则新值相应位位1,否则位0.
0 1 0 0 1 0 1 0(A)
0 1 0 0 0 1 0 0(B)
0 1 0 0 0 0 0 0 (A&B)
按位非运算符:将一个值的二进制位对应0变为1,1变为0;
0 1 0 0 1 0 1 0(A)
1 0 1 1 0 1 0 1(~A)
异或运算符:将两个新值结合起来,生成一个新的整数值,相应的位相同得0不同得1.
0 1 0 0 1 0 1 0(A)
0 1 0 0 0 1 0 0(B)
0 0 0 0 1 1 1 0 (A^B)