跳至主要內容

计算机如何做减法

大约 3 分钟...计算机基础

计算机如何做减法

最近在看《编码》这本书,发现自己对于计算机的减法有了更深的理解

一、预备知识

  1. 自然数
  2. 整数
  3. 集合

二、什么是减法

什么是减法呢,粗浅的定义

从一个数中扣除另一个数

换一个角度试试

一个数加上一个负数

从这个角度说,加法也可以看做另一种加法,只不过其中一个加数是负数

如果数字中只有自然数,是不是只使用加法就可以了呢

在解决这个问题之前,先回顾一下整数与自然数

三、整数与自然数

先假设数字范围是 -20 ~ 19,一共40个数字

则整数的全集是:

-20, -19, -18, ...... , -3, -2, -1, 0, 1, 2, 3, ...... , 17, 18, 19

自然数的全集是:

0, 1, 2, 3, ...... , 17, 18, 19

让两个集合的数字数目相同,自然数的全集可以改成

0, 1, 2, 3, ...... , 17, 18, 19, 20, 21, 22, ...... , 38, 39

对比数目相同的两个集合,如果让20对应-20,21对应-19,以此类推,就形成了一个数字循环,如下表所示:

整数自然数
-2020
-1921
-1822
-1723
-1624
-1525
-1426
-1327
-1228
-1129
-1030
-931
-832
-733
-634
-535
-436
-337
-238
-139
00
11
22
33
44
55
66
77
88
99
1010
1111
1212
1313
1414
1515
1616
1717
1818
1919

四、如何将减法转化为加法

在 -20 ~ 19 这个范围内,使用新的自然数集合,没有了负数也就不需要使用减法

对照上表中左右列的数字,举个例子:

11 +(-9)= 11 + 31 = 42

注意,我们的表中没有42这个数字,这个叫做溢出,去除多余的部分,结果为2

可以试试其他数字的减法,都可以使用这个方法来计算

五、为什么可以这样转换

举个例子,基于24小时制,假设现在是晚上18点,7个小时后是几点?凌晨1点

为什么不是25点,因为没有25点,相对于24小时制,25点溢出了,超出的部分才是现在的时间

六、总结

这种数字的表示方法叫做补码,关于补码的概念,这里不深入讨论

这种类似钟表的数字循环,可以有效的帮助我们将负数映射为对应溢出数字

每一个数字都有对应的补码,将数字转化为补码后,数字集合中将不再有负数,故可以仅通过加法运算

在计算机中,数字的一律用补码来表示,故计算机中的减法是借用补码和加法来实现的

参考

  1. 编码:隐匿在计算机软硬件背后的语言open in new window
  2. 百度百科:补码open in new window
上次编辑于:
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.6