原码反码补码推导原理

本文介绍了如何通过补码原理将减法转化为加法的过程。通过使用补数避免了减法运算中的借位操作,简化了计算机内部的算术运算。文章详细解释了这一转换过程,并给出了具体的数字例子。
原码反码补码推导原理

 被加数                             被减数
    加数                                减数
————                       ————
       和                                   差


减法和加法在某些方面是互为补充的,这两种计算机制不同。
加法从最右边一列向最左边一列计算,每一列的进位都加到下一列中。
减法不用进位,相反,要用到借位---一种本质上与加法不同的机制。


   124
-   77
———
    47

从右边一列开始,首先7比4大,所以从2借1。这样子变成了14-7=7,
2被借了1,变成1,继续,1比7小,所以继续从1借1,11减7等于4。
1被借1后成为1,1减1变成0,最后的结果为47


一般不会使用逻辑门来实现减法器,乘法器,除法器,是利用数学规律在加法器的基础上进行拓展。
那减法是怎么样变成加法的。在《原码反码补码》那节课直接给大家演示了一下转换办法。
但那个转换办法是怎么样推导出来的呢?接下来给大家简单说说这个推导过程。


比如上面的减数是2位数:77,而两位数中最大的十进制数为:99,如果拿99-77,这样子就不存在需要借位了。
  99          
- 77
———
  22

如果减数为三位数的话,就用3位数中最大的数字999去减,以此类推。

这样子就得到了一个77的补数。(补数和补码可不是一回事,别混淆)
77之9的补数是22,反之,22之9的补数是77。
这样做的好处在于,无论减数是多少,计算这个减数9的补数永远不需要借位。

计算出减数9的补数之后,把它加到原来的被减数上:
   124
+  22
————
   146


再加一个1,并且减去100:

  146
 +   1
- 100
_________
    47

你也许有点懵了,发生了什么,怎么结果突然就蹦出来呢?

原始题目是:124-77
表达式加一个数再减同一个数得到的结果是一样的,所以先加上100,再减去100.


124-77+100 -100
等同于: 124-77 +99+1-100

再进行变换 124+ (99-77)+1-100

这与前面描述过的用9的补数进行的计算是一致的。
虽然用了两个减法和两个加法来代替一个减法,但是也因此省去了讨厌的借位。
那如果减数比被减数大怎么办呢?例如

    77
- 124
————
   ???

减数比被减数大,只需要交换两数的位置,再把上面的过程重复一下,然后计算结果前面加一个负号就行了。



现在完整的回忆一下流程:
124        -            77
124        -            77             +       100          -    100
124        -            77             +       99           +    1   -  100
124        +           (99             -       77)        +    1   -  100
=124     +          23     -100
=47


0111 1100    -   0100 1101
0111 1100    -   0100 1101   +      1 0000 0000   -  1 0000 0000
0111 1100    -   0100 1101   +      1111 1111   +1 -  1 0000 0000
0111 1100   +   (1111 1111  -       0100 1101)  +1 -  1  0000 0000
0111 1100    +  1011 0011   - 1 0000 0000
= 1 0010 1111
=    0010 1111
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值