位运算

作者: 杭拼小何 | 来源:发表于2020-09-24 11:00 被阅读0次

    要了解位运算首先要补一下原码,补码,反码的概念

    原码:

    是最简单的机器数表示法。用最高位表示符号位,‘1’表示负号,‘0’表示正号。其他位存放该数的二进制的绝对值。
    若以带符号位的四位二进值数为例
    1010 : 最高位为‘1’,表示这是一个负数,其他三位为‘010’,计算过来十进制就是-2

    反码:

    原码最大的问题就在于一个数加上他的相反数不等于零
    0001+1001=1010 (1+(-1)=-2) 0010+1010=1100 (2+(-2)=-4)
    于是反码的设计思想就是冲着解决这一点,既然一个负数是一个正数的相反数,那我们干脆用一个正数按位取反来表示负数试试。
    反码:正数的反码还是等于原码,负数的反码就是他的原码除符号位外,按位取反。
    1.3是正数,反码与原码相同,则可以表示为0011
    2.-3的原码是1011,符号位保持不变,低三位(011)按位取反得(100)
    3.所以-3的反码为1100

    补码:

    正数的补码等于他的原码
    负数的补码等于反码+1。

    位运算符 >>>、>>和<<

    没有<<<这种运算符,因为左移都是补零,没有正负数的区别
    如 -12 的二进制为:1111 1111 1111 1111 1111 1111 1111 0100;
    -12 >> 3 即带符号右移3位,结果是:1111 1111 1111 1111 1111 1111 1111 1110,十进制为: -2;
    -12 >>> 3 就是右移三位,前面补零,为:0001 1111 1111 1111 1111 1111 1111 1110,十进制为:536870910。
    >>:按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。符号位不变。
    >>>:按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补零

    相关文章

      网友评论

          本文标题:位运算

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