EDA之路:在计算机的底层怎么实现除法

您所在的位置:网站首页 word里怎么计算除法和乘法 EDA之路:在计算机的底层怎么实现除法

EDA之路:在计算机的底层怎么实现除法

2023-05-24 10:38| 来源: 网络整理| 查看: 265

计算机是一个分层的信息编码系统(我之前说过)。

这个系统的层次结构从下往上依次为:数字电路,CPU指令集,汇编语言,C语言,操作系统,高级语言,应用程序。

之所以分层,是为了保证每层的实现都不会太复杂。

因为人脑的计算能力有限,(太复杂的东西)一旦超过了人脑的算力,人就hold不住了。

所以,当一个模块复杂到一定程度时,自然就要把它分层。

1,除法,是数字电路层最复杂的一个模块。

除法在汇编里是一条指令,在C语言里是一个运算符,但要想用电路去实现它并不容易。

加法的实现是很简单的,0 + 0 = 0, 1 + 0 = 0 + 1 = 1, 1 + 1 = 2 = 0b10.

所以加法的前3种情况就是个二进制的或运算(或门),最后一种情况是个与非门。

当个位的2个数字都是1时,与门的输出为1,但加法的输出为0,所以要取反(加个非门)。

进位的处理是个与门,当个位的2个数字都是1时,进位的输出为1(1 & 1 = 1)。

1个二进制位的带进位加法

减法,当然是加上它的相反数。

抽象代数的域的定义里并没有减法,而只有加法的逆元。电路上对加减乘除的实现,实际上是按照抽象代数来的。

乘法,实际上是把乘法口诀的结果累加起来的。

对于二进制来说,实际上只有1条乘法口诀:1 x 1 = 1。

我们考虑2个二进制位的乘法:

a + b * 2 = (c + d * 2)(e + f * 2)

              = ce + (de + cf) * 2 + [df * 4].

在只有2个二进制位的计算机上(2位机),右边第3个式子[df * 4]已经超过了计算机的寄存器位数,所以它会被溢出!

实际考虑的只是乘法结果的低位部分,这里是低2位。

显然,结果的第0位和第1位分别是:

a = ce % 2,

b = (ce / 2 + de + cf) % 2.

a, b, c, d, e, f都是二进制的数字(只能是0或1),这就是数字电路的乘法公式。

1个二进制位的乘法口诀就是与门电路:0 x 0 = 0 x 1 = 1 x 0 = 0, 1 x 1 = 1。

所以,乘法的电路可以用与门和加法实现!

这并不复杂,复杂的是除法:(

2,除法怎么实现?

还是看上面的公式:

乘法相当于知道c, d, e, f, 求a, b,

除法相当于知道a, b, c, d,求 e, f.

但是求ab是正向运算,求ef是反向运算。

逆向总是很难的,因为信息的消失很难复原,但这里可以复原。

怎么复原?

已知 a = ce % 2,实际上只需要乘以“c的倒数”,就可以求出e的值。

这里的“倒数”并不是真正的倒数,而是在同余方程意义下的“数论倒数”。

在对2的幂同余的情况下:

1的倒数是1,因为 1 x 1 = 1,1 % 2 = 1,

3的倒数是3,因为 3 x 3 = 9,9 % 8 = 1,

5的倒是是13,因为 5 x 13 = 65,65 % 64 = 1,

依次类推,......

所以在低位机上计算高位除法,最关键的就是求出低位整数的数论倒数!

怎么在32位机上计算64位的除法?

只要能在32位机上计算出32位整数(在同余2^32的情况下)的倒数,就可以解决64位的除法。

这个倒数怎么求?至少可以拿for循环去试验啊。

不是把32位一起处理,而是一个个的(二进制位)依次处理的情况下,实际上并不需要求一个大整数的数论倒数。

a = ce % 2,其中c肯定是1!

因为如果c是0的话,除数就是2的倍数,可以用移位来代替除法。

如果除数的第0位是0,显然把它和被除数同时右移1位,不会影响除法的结果(它们至少有1个公约数2)。

所以,真正需要除法电路去处理时,除数的个位必然是1。

根据二进制的那唯一一条乘法口诀 1 x 1 = 1,所以e = a。

因为ce都是二进制数字,显然 ce / 2 = 0,所以b = (de + cf) % 2。

所以,除法实际上也是用与门和加法实现的。

二进制计算机上的整数除法,是一个递归求解同余方程组的问题。

4位机上怎么计算8位的除法3,电路实际是并行的

如果用软件实现这个算法的话,上图的代码只能一行行的执行,速度很慢。

但如果是硬件电路的话,所有的步骤都是并行的,电路会瞬间进入稳定状态,给出运算结果。

为什么C语言的书上要求尽量用移位代替(2的幂的)除法?

因为早期的CPU不一定有硬件除法。

具体的电路图我还没有试验,等我试验好了再给出来。

4位的乘法和除法的递推过程



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3