运算符 - 位运运算(最接近计算机底层的)
2019-03-07 本文已影响0人
sexyhair
6.2.5 位运运算(最接近计算机底层的)
位与运算(&)
位或运算(|)
位异或运算(^)
位反码(~)
<<(左移)
>>(右移)
>>>(无符号右移)
位与运算(&)
有0则0(与逻辑运算符中&很像呀,有false则false)
位与(&)运算的过程
位或运算(|)
有1则1(与逻辑运算符中|很像呀,有true则true)
位或(|)运算过程
位异或运算(^)
相同为0,不同为1(与逻辑运算符中^很像呀,相同为false,不同为true)
位异或(^)运算过程
特点:一个数据对另一个数据位异或(^)两次,则值是此该数本身;
位反码(~)
非0则1,非1则0(与逻辑运算符中!很像呀,非false则true,非true则false)
位反码(~)运算过程
<<(左移)
左移n位,空位补0,高位移除
左移的运算过程
(左移的结果 = 左移的数据x2的移位数次幂)即12=3*2(二进制)^2
>>(右移)
规则:左移n位,二进制的高位是0,则空缺位补0,二进制的高位是1则空缺位补1
右移的运算过程
(右移的结果 = 右移的数据/2的移位数次幂)即0=3/2(二进制)^2
负数的右移运算过程
>>>(无符号右移)
规则:右移n位,空缺位总是补0
无符号右移的运算过程
位运运算练习:
(1)请实现2个整数变量的交换?
(2)请写出最有效的2*8的结果?
其实就是28的底层写法:8 = 2的3次幂,即2左移3个位置,22^3