返回信息流翻了一些书,对于乘法的结果,大概都是设置两个专门的寄存器,一个存高位,一个存低位。
那么,打个比方,一个计算机,是4位的,两个4位长的数,他们相乘,结果应该是8位长,高4位和低4位分别存在两个专门的寄存器里头。可是,如果我要计算一个数的3次方或者更高的次方呢??
拿3次方来说,先算出平方,然后就要进行8位长的数和4位长的乘法,那岂不是要把那两个专用寄存器的数分别和4位长的数据相乘,然后得到两个8位长的数,再把这两个8位长的数中那个作为高位的左移4位,然后加上另一个作为低位的8位数,最后得到一个12位长的数???
这样岂不是很麻烦??
拿现在的32位的机器来说,6在机器里面表示成二进制,应该是个32位长的数吧,前头补上0,然后,我要计算6的平方,那么应该是得到一个64位长的数了,那6的立方呢?难道有个专门的部件来判断,6*6=36,没有超过32位可以表示的范围,就把那个36表示成32位长的数,再来计算立方???
盼望解答,谢谢。。。
这是一条镜像帖。来源:北邮人论坛 / circuit / #4317同步于 2008/4/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Circuit机器人发帖
[求助]如何存储乘法的结果,如何计算立方或者更高的次方
askforsweet
2008/4/3镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
不错,有做算法层次的潜力。应该都是野蛮的计算的,如果想实现你所说的智能判断,需要在特殊的乘法器里实现,建议先看看波兹编码,有一些专用的乘法器设计。还有对于乘法器的设计,我记得有一种移位乘法器,有一个高位全零判断,如果发现高位全零后,就不会再进行移位加和运算了,这样浪费的只是空间而已:)