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

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


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

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

要解决这个问题,首先从最右列入手,可以看见,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位,就溢出最高位,就得到了正确结果。

 



目录
相关文章
|
6月前
|
存储 算法 调度
【考研必备】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)(下)
【考研必备】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)
408王道计算机组成原理强化——输入输出系统大题(I/O)
408王道计算机组成原理强化——输入输出系统大题(I/O)
276 1
408王道计算机组成原理强化——输入输出系统大题(I/O)
|
6月前
|
存储 安全 网络安全
【考研必备二】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)(下)
【考研必备二】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)
|
6月前
|
存储 Unix Linux
【考研必备二】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)(上)
【考研必备二】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)(上)
【考研必备二】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)(上)
|
6月前
|
存储 机器学习/深度学习 Unix
【考研必备】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)(上)
【考研必备】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)
【考研必备】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)(上)
|
7月前
|
存储 算法 C语言
《信任的进化》游戏简易版逻辑算法的实现(C语言)
《信任的进化》游戏简易版逻辑算法的实现(C语言)
|
11月前
|
JavaScript 前端开发 C语言
聊一聊|计算机函数
聊一聊|计算机函数
102 0
聊一聊|计算机函数
|
存储
计算机组成原理“上分秘籍”——数据的表示和运算
计算机组成原理“上分秘籍”——数据的表示和运算
170 0
计算机组成原理“上分秘籍”——数据的表示和运算
408王道计算机组成原理强化——数据的运算及大题(下)
408王道计算机组成原理强化——数据的运算及大题
267 1
408王道计算机组成原理强化——数据的运算及大题(下)
408王道计算机组成原理强化——数据的运算及大题(上)
408王道计算机组成原理强化——数据的运算及大题
165 1
408王道计算机组成原理强化——数据的运算及大题(上)