6.2.5 位运运算(最接近计算机底层的)
位与运算(&)
位或运算(|)
位异或运算(^)
位反码(~)
<<(左移)
>>(右移)
>>>(无符号右移)
位与运算(&)
有0则0(与逻辑运算符中&很像呀,有false则false)
![](https://img.haomeiwen.com/i3779438/ea8af697f753d1e6.png)
位或运算(|)
有1则1(与逻辑运算符中|很像呀,有true则true)
![](https://img.haomeiwen.com/i3779438/ec8bb2990e1438fb.png)
位异或运算(^)
相同为0,不同为1(与逻辑运算符中^很像呀,相同为false,不同为true)
![](https://img.haomeiwen.com/i3779438/a829b59368f1194c.png)
特点:一个数据对另一个数据位异或(^)两次,则值是此该数本身;
![](https://img.haomeiwen.com/i3779438/a55fdb79fa7e6657.png)
位反码(~)
非0则1,非1则0(与逻辑运算符中!很像呀,非false则true,非true则false)
![](https://img.haomeiwen.com/i3779438/1adf5734d6a330be.png)
<<(左移)
左移n位,空位补0,高位移除
![](https://img.haomeiwen.com/i3779438/78a0e6d44e82312d.png)
(左移的结果 = 左移的数据x2的移位数次幂)即12=3*2(二进制)^2
>>(右移)
规则:左移n位,二进制的高位是0,则空缺位补0,二进制的高位是1则空缺位补1
![](https://img.haomeiwen.com/i3779438/247af4894cdc8812.png)
(右移的结果 = 右移的数据/2的移位数次幂)即0=3/2(二进制)^2
![](https://img.haomeiwen.com/i3779438/c790beea5db58220.png)
>>>(无符号右移)
规则:右移n位,空缺位总是补0
![](https://img.haomeiwen.com/i3779438/4fa8175b6e431f0f.png)
位运运算练习:
(1)请实现2个整数变量的交换?
![](https://img.haomeiwen.com/i3779438/29db421889038f19.png)
(2)请写出最有效的2*8的结果?
其实就是28的底层写法:8 = 2的3次幂,即2左移3个位置,22^3
网友评论