位运算

操作数: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

posted on 2021-01-25 19:01  landiss  阅读(68)  评论(0编辑  收藏  举报