姜咏江
计算机厂商经常以计算机的“位长”作为卖点,似乎让用户深信:计算机位数越长越精确,性能越好。其实未必如此。
计算机运算的精确度并不是由运算器的位数来决定的,而要看能否与存储器配合起来,设计好相应的指令,才能够精确地进行计算。这里给出用8位教学计算机求255以内自然数阶乘的例子,足可以说明这方面的问题。读者有兴趣还可以做后面的练习。
例 求自然数N! (255!的精确结果长度为210个字节)
我们只求一个不超过255的阶乘问题的解决。由于部分积位数的不断增加,必须用分段相乘的方法处理。
用4位十进制作7865’4264×2361,我们可以如下分步操作。
(1)4264×2361=1006’7304,然后作
(2)7865×2361=1856’9265,还要作
(3)1856’9265+1006=18570271,最后的结果是
(4)1857’0271’7304。
如果被乘数位数再多,那么要不断地进行(2)(3)的操作,将其用一条指令来完成,就设计出了“乘加”指令MADD。
这里采用由低向高的乘,方便知道部分积的长度。从1×k(k=1)开始,将每次与乘数k相乘的一个字节放在pw0中,每次乘得的结果(部分积)放在p开始的位置,高字节在高地址处。
“变量分配”是在数据存储器当中进行的,从0号单元开始。
2010-4-29
https://blog.sciencenet.cn/blog-340399-317838.html
上一篇:
搞处理机设计的诀窍下一篇:
小心移动通信“技术性”拿走你的钱