计算机里面的算是逻辑单元(ALU)所进行的加减乘除运算,都是通过加法进行的,原因是因为实现加法的最基本的输入输出逻辑门电路最简单。减法运算是通过补码将减法转变为加法,下面看看乘法和除法。
图1
观察图1,可以看出,其实现过程是这样的:先看乘数的最低位是1还是0,如果是1,则把这个乘法的结果加上被乘数,如果是0,则结果不变;再对乘数的次低位重复这个过程,只是次低位为1的时候,在把被乘数加到结果里面去的时候要向左移一位。这里我们不去考虑移位等技术的具体实现细节,那么乘法转变为加法就只包括下面两步:
第一步:判断乘数的某一位是1还是0。是1就在结果中加上被乘数,否则不加。
第二步:判断另外一位乘数并移位。
然后重复,仅此而已。
图2
图2中的X代表被乘数,控制门当被判断的那一位乘数是1的时候打开,从而将被乘数加到结果累加器A中,是0则不打开。Q代表乘数,判断完一位后要进行移位以便判断下一位。
那么除法如何转变为加法呢?
图3
从图3可以看出,当用被除数除以除数的时候,无非是将被除数减去除数(已经通过补码转变成了加法),如果够减,则商为1,否则为0;然后移位,准备下一次减法。
图4
图4和图3大体类似,只不过A里面放的是每一次减法的结果,商应该放在了别的地方。
这样看来,乘除转变为加法好像也很简单?