人类对于加法运算的理解是非常直观的,比如1+1=2这样的基本算式。对于计算机来说,这种运算并不是其天生的能力。计算机的运行是基于二进制系统,而这个系统的实现依赖于复杂的电路结构。
那么,计算机是如何执行加法操作的呢?虽然我曾经对这个问题只有一些浅显的了解,但通过观看YouTube上的Computer Science Crash Course系列视频,我对其机制有了更深入的理解。
在二进制系统中,加法运算的规则与异或门(XOR)的逻辑特性有着紧密的联系。例如,我们可以通过以下示例来理解这一对应关系:
① 当A=0且B=0时,Y=A+B=0(即Sum);
② 当A=1且B=0时,Y=A+B=1;
③ 当A=0且B=1时,Y=A+B=1;
④ 当A=1且B=1时,Y=A+B=0。
异或门与加法的对应关系
上述规律是否完美无缺?对于单一位的运算而言,答案是肯定的。
如果世界仅存在一位数据,那将是多么单调乏味。在考虑第④种情况时,我们必须引入进位的概念。具体而言,当A=1且B=1时,Y=A+B=0(同时产生进位)。
一个令人惊奇的现象由此浮现!如果忽略进位因素,加法运算等同于异或(XOR)操作。而若包含进位,则需要在异或的基础上叠加与运算(AND)。
如果我们对异或门不太了解,可以将其想象为一种生活现象:异性相吸,相斥,男女搭配则干活不累。而对于与门,可以将其类比为数学中的乘法规则:正数乘以正数的结果为正数,其他组合均无法得到正数。
在下面的表格中,新增的C列代表与运算(AND)的结果,加入这一列后,我们的加法表得以完善。
带进位的加法表
尽管这一表格看似简单,但计算机并不能直接识别。那么,它是如何进行计算的呢?无数杰出的工程师最终想到了利用电路模拟加法的方法。
在计算机的世界里,每个空间代表一位(1 bit)。当这两个空间发生加法运算时,不同元素将融合,演化出新的实体,而相同元素则相互抵消,最终化为虚无。
倘若出现了本级世界无法容纳的进位,那就让它“白日飞升”,直接推送到上一级空间。这样一来,我们的世界便清净了。让上一级空间去处理进位问题。