微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > 嵌入式系统设计讨论 > 计算机中原码,反码,补码之间的关系

计算机中原码,反码,补码之间的关系

时间:10-02 整理:3721RD 点击:

首先提几个概念: 原码,反码,补码 

    原码是什么?

      原码就是早期用来表示数字的一种方式: 一个正数,转换为二进制位就是这个正数的原码。负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码

      举例说明:

      int类型的 3 的原码是 11B(B表示二进制位), 在32位机器上占四个字节,那么高位补零就得:

      00000000 00000000 00000000 00000011

      int类型的 -3 的绝对值的二进制位就是上面的 11B 展开后高位补零就得:更多信息学习交流3311615775

      10000000 00000000 00000000 00000011      

      但是原码有几个缺点,零分两种 +0 和 -0 。


    反码是什么 ?

      正数的反码就是原码,负数的反码等于原码除符号位以外所有的位取反

      举例说明:

      int类型的 3 的反码是

      00000000 00000000 00000000 00000011

      和原码一样没什么可说的

      int类型的 -3 的反码是

      11111111 11111111 11111111 11111100

      除开符号位 所有位 取反

      解决了加减运算的问题,但还是有正负零之分,然后就到补码了


    补码是什么?

      正数的补码与原码相同,负数的补码为 其原码除符号位外所有位取反(得到反码了),然后最低位加1.

      还是举例说明:

      int类型的 3 的补码是:

      00000000 00000000 00000000 00000011

      int类型的 -3 的补码是

      11111111 11111111 1111111 11111101

      就是其反码加1


最后总结一下:

    正数的反码和补码都与原码相同。

    负数的反码为对该数的原码除符号位外各位取反。

    负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top