谈一谈|计算机是如何做减法的

简介: 谈一谈|计算机是如何做减法的


对于加法来说,计算机很容易实现,加法是始终从两个加数的最右列向最左列进行计算的,每一列的的进位加到下一列中。而在减法中没有进位,只有借位,它与加法存在本质的区别。

例如,可以先看一道例题:

要解决这个问题,首先从最右列入手,可以看见,6是大于3的,所以要从5上借1,再用13减去6得到7。由于5已经被借走1,所以实际上是4了,继续向2借1,得到7,以此类推,我们可以得到结果为77。

可以通过一些小技巧来让减法不涉及借位。为了避免借位,首先要从999中减去减数,而不是从原本的被减数中减去减数。

由于操作数是三位数,所以这里使用了999。从一串9中减去一个数叫做对9求补数,176对9的补数是823.计算出补数后,将补数与原来的被减数相加就可以得到1076,最后再将结果加上1,并减去1000。这样就得到了结果77,而且没有使用到借位。原理是这样的:

等价于

然后将数字重新组合

那么将这种方法应用于二进制,就变为了:

第一步,用11111111(255)减去减数:

第二步,将补数与减数相加:

第三步,将结果加1,再减去100000000就得到1001101,就等于十进制数的77。


其实可以发现,上述的补数,就是把减数按位把0换成1,把1换成0。然后把补数和减数相加得到的结果再减去100000000,实际上在电脑中没有进行这一步,它是直接把最高位舍弃了。就好比一个24小时的时钟,现在是23点,再加上三个小时就是26,但是时钟最高位只有24,接着就是1点了,所以当超过24过后就溢出,得到了2点。在计算机中如此。当只有8位的时候,最后补数与减数相加得到了9位,就溢出最高位,就得到了正确结果。

 



目录
打赏
0
0
0
0
14
分享
相关文章
408王道计算机组成原理强化——输入输出系统大题(I/O)
408王道计算机组成原理强化——输入输出系统大题(I/O)
427 1
408王道计算机组成原理强化——输入输出系统大题(I/O)
【考研必备】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)(下)
【考研必备】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)
【考研必备二】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)(下)
【考研必备二】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)
电学:原理、应用与编程实践
电学:原理、应用与编程实践
【考研必备二】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)(上)
【考研必备二】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)(上)
【考研必备二】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)(上)
当“基本功”数据结构与算法被图形分解,要还不会就真的没办法了
数据结构与算法并不只是抽象的概念,掌握好的话可以写出更高效、运行得更快的代码,这对于如今盛行的网页和移动应用开发来说尤为重要。如果你最近一-次使用算法是在大学课堂上或求职面试时,那你应该还没见识到它的真正威力。
408王道计算机组成原理强化——数据的运算及大题(下)
408王道计算机组成原理强化——数据的运算及大题
621 1
408王道计算机组成原理强化——数据的运算及大题(下)
408王道计算机组成原理强化——数据的运算及大题(上)
408王道计算机组成原理强化——数据的运算及大题
242 1
408王道计算机组成原理强化——数据的运算及大题(上)