• 原码反码补码


    注意:下面内容中的数字均用8位二进制数表示。

    原码

    • 最高位(最左边)代表符号位,0代表正数,1代表负数。

    例:

     1 的原码是 0000 0001
    -1 的原码是 1000 0001
    

    反码

    • 正数的反码与原码一致。
    • 负数的反码是对原码按位取反,只是最高位(符号位)不变。

    例:

     1 的反码是 0000 0001
    -1 的反码是 1111 1110
    

    补码

    • 正数的补码与原码一致。
    • 负数的补码是该数的反码加1。
    • 计算机数字运算均是基于补码的。
    • 单字节(8位)运算的模为256=2^8。负数的补码为模减去该数的绝对值。

    例:

     1 的补码是 0000 0001
    -1 的补码是 1111 1111
    

    补码优势

    • 如果计算机内部采用原码来表示数,那么在进行加法和减法运算的时候,需要转化为两个绝对值的加法和减法运算。计算机既要实现加法器,又要实现减法器,代价有点大。

    • 化减为加,举一个生活中的例子来说明这个问题:时钟一圈是360度,当然也存在365度,但其实它和5度是一样的;相同的道理,-30度表示逆时针旋转30度,其与顺时针旋转330度是一样的;
      这里数字360表示时钟的一圈,在计算机里类似的概念叫,它可以实现化减为加,本质上是将溢出的部分舍去而不改变结果。

    实例

       15  => 原码: 0000 1111 => 反码: 0000 1111 => 补码: 0000 1111
    + (-5) => 原码: 1000 0101 => 反码: 1111 1010 => 补码: 1111 1011
    -------------------------------------------------------------
    				    按反码计算后结果: 0000 1010
    				        转为十进制是: 10
    

    参考

  • 相关阅读:
    apache 错误日志
    搭建服务器
    vim配置
    临时表增加查询速度
    如何清空$_POST or $_GET
    hdu 2084
    快速幂
    zjut 1176
    rwkj 1091
    zjut 1090 --------同余定理的应用
  • 原文地址:https://www.cnblogs.com/devzyh/p/12892911.html
Copyright © 2020-2023  润新知