技术栈

2019-04-24——算法基础 移位运算

2019-04-25  本文已影响0人  烟雨乱平生

左移运算符(<<)

将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。

按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。

右移运算符(>>)

将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。

按二进制形式把所有的数字向右移动对应位移位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1

无符号右移运算符规则

按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同

为什么~1=-2

1在计算机中用二进制表示
0b0000_0000_0000_0000_0000_0000_0000_0001
1取反后在计算机中用二进制表示
0b1111_1111_1111_1111_1111_1111_1111_1110
因为该数的最高为是1表示一个负数,在计算机中负数使用的是补码表示,所以该二进制表示的是一个补码。
那么该数的绝对值是通过对补码取反,然后加1。
0b0000_0000_0000_0000_0000_0000_0000_0010
所以为2,在加上符号位,所以为-2。

上一篇下一篇

猜你喜欢

热点阅读