zoukankan      html  css  js  c++  java
  • 计算机中的原码、补码与反码

    一、原码:

      所谓原码就是当前数字的二进制表现形式,int为例,第一位表示符号 (0正数 1负数)简单期间一个字节表示

      +7的原码为: 00000111
       -7的原码为: 10000111

      对于原码来说,绝对值相等的正数和负数只有符号位不同。

    二、反码:

      正数的反码就是本身。负数的反码是二进制保留符号位。剩余位取反,比如-1的反码是1111 1110;

    三、补码:

      正数的反码、补码、原码都是一样的,负数的补码是在其反码的基础上+1,比如-1的补码是1111 1111。

    为什么要使用补码呢:

      我们知道,0是不分正数还是负数的,也就是说,如果使用原码表示0的话,有两种表示方式,即00000000与10000000,这对计算来说很不方便。

    如果我们使用补码来表示的话:

      正数的0的表示:

        因为正数的原码、反码、补码都是相同的。所以正数0的反码与补码都是00000000;

      负数的0的表示:

        负数的0的原码是10000000,它的补码也就是在其反码的基础上+1,10000000的反码为符号位不变,剩余位取反,即为11111111,再加一的话为00000000,这样的话0的正数表示与负数表示都是00000000。

      其实还有一个更重要的原因:就是利用高位溢出,将减法运算变成加法运算。这样可以简化运算的设计:

    比如计算3-2,我们可以当做3+(-2)来运算:

    化为二进制:

      3:0000 0011;

      -2:原码:1000 0010;反码:1111 1101;补码在反码基础上+1,即为:1111 1110

    这样3+(-2)的计算为:1000 0010

             +  1111 1110

            --------------------

     高位溢出结果为:0000 0001

    在计算机系统中,数值都是以补码来表示和存储的。计算机计算过程是 先转换成补码,再按位相加。

  • 相关阅读:
    python
    图片放大,缩小等操作
    template-web.js 自定义过滤器
    python
    python
    Android Volley源码分析及扩展
    Android 6.0动态权限申请教程
    Jarsigner签名使用
    Python正则表达式(总)
    Python错误和异常概念(总)
  • 原文地址:https://www.cnblogs.com/qingo00o/p/8982813.html
Copyright © 2011-2022 走看看