首页 > 代码库 > 源码、反码、补码

源码、反码、补码

源码、反码、补码


    引入原码、反码和补码的目的是为了解决减法问题。因为计算机CPU的运算器中只有加法器,要把减法转化成加法来计算。

计算机中没有减法器的原因

    在做减法运算时,如果两个数十用原码表示的,则首先需要比较两个数绝对值的大小,然后以绝对值大的一个作为被减数、绝对值小的一个作为减数,求出差值,并以绝对值大的一个数的符号作为差值的符号。不难看出,这个操作过程比较麻烦,而且需要使用数值比较电路和减法运算电路。如果能用两数的补码相加代替上述的减法运算,那么计算过程中无需使用数值比较电路和减法运算电路了,从而使运算器的电路结构大为简化。

原码:将一个整数,转换成二进制,就是其原码。

反码:正数的反码就是其原码;负数的反码是将原码中除符号位以外,每一位取反。

补码:正数的补码就是其原码;负数的补码是反码+1;如单字节5的补码为:0000 0101;-5的原码为1111 1011。

   

1.二进制数中,两数的补码之和等于两数和的补码。

2.补码=反码+1

3.反码=原码除符号位外其他数值取反(即该数的绝对值取反),即“0”变“1”,“1”变“0”。

4.任何正数的原码、反码、补码的形式完全相同。

5.在计算机中,有符号的数都是采用补码来表示的。

6.计算的时候,符号位也参与运算。



例子:使用补码计算“-16+11”的运算:

    1 1 1 1 0 0 0 0 +    -16的补码

    0 0 0 0 1 0 1 1      11的补码

    __________________

    1 1 1 1 1 0 1 1       -5的补码


    如果是“-16-11”,那么久转化为加法运算“-16+(-11)”

    

    1 1 1 1 0 0 0 0 +    -16的补码

    1 1 1 1 0 1 0 1     -11的补码

    ———————————

    1 1 1 1 0 0 1 0 1    -27的补码


  

        

    

本文出自 “德泽无忧” 博客,请务必保留此出处http://dezewuyou.blog.51cto.com/2628602/1903173

源码、反码、补码