美文网首页技术栈
2019-04-24——算法基础 移位运算

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

作者: 烟雨乱平生 | 来源:发表于2019-04-25 00:58 被阅读0次

    左移运算符(<<)

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

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

    • 在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。

    右移运算符(>>)

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

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

    • 右移一位相当于除2,右移n位相当于除以2的n次方。

    无符号右移运算符规则

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

    为什么~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。

    相关文章

      网友评论

        本文标题:2019-04-24——算法基础 移位运算

        本文链接:https://www.haomeiwen.com/subject/gfsogqtx.html