操作数:3--> 0000 0011 --> 1*2^1+1*2^0=3
操作数:5--> 0000 0101 --> 1*2^2+0*2^1+1*2^0=5
(1)取反(~):只对一个操作数进行运算,将操作数二进制中的 1 改为 0,0 改为 1。
3 0 0 0 0 0 0 1 1
—————————
~ 1 1 1 1 1 1 0 0
(2)按位与(&):参与运算的数字,低位对齐,高位不足的补零,如果对应的二进制位同时为 1,那么计算结果才为 1,否则为 0。因此,任何数与 0 进行按位与运算,其结果都为 0。
3 0 0 0 0 0 0 1 1
5 0 0 0 0 0 1 0 1
—————————
& 0 0 0 0 0 0 0 1
(3)按位或(|):参与运算的数字,低位对齐,高位不足的补零。如果对应的二进制位只要有一个为 1,那么结果就为 1;如果对应的二进制位都为 0,结果才为 0。
3 0 0 0 0 0 0 1 1
5 0 0 0 0 0 1 0 1
—————————
| 0 0 0 0 0 1 1 1
(4)按位异或(^):参与运算的数字,低位对齐,高位不足的补零,如果对应的二进制位相同(同时为 0 或同时为 1)时,结果为 0;如果对应的二进制位不相同,结果则为 1。
3 0 0 0 0 0 0 1 1
5 0 0 0 0 0 1 0 1
—————————
^ 0 0 0 0 0 1 1 0
(5)左移(<<):按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。
0 0 0 0 0 0 1 1
—————————
<< 0 0 0 0 0 1 1 0
向左移一位,相当于乘以2;向左移两位,相当于乘以4;
(6)右移(>>):按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补零。
0 0 0 0 0 0 1 1
—————————
>> 0 0 0 0 0 0 0 1
向右移一位,相当于除以2;向右移两位,相当于除以4