运算符 - 位运运算(最接近计算机底层的)

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

上一篇 下一篇

猜你喜欢

热点阅读