计组-booth乘法-谈原理和实现
那么如何實(shí)現(xiàn)這個(gè)變換?
求X×YX \times YX×Y,皆為 n bit
如果Y是無(wú)符號(hào)數(shù),可作如下展開(kāi);如果Y是有符號(hào)數(shù),亦可,因?yàn)槠浼词乖賲⑴c運(yùn)算,最后會(huì)由于取模而表現(xiàn)負(fù)數(shù)功能(可理解為對(duì)負(fù)數(shù)使用了新的具有可加性的編碼方式,而乘除正是加操作的累計(jì))
Y=2n?1yn?1+2n?2yn?2+2n?3yn?3+...+22y2+21y1+20y0Y=2^{n-1}y_{n-1}+2^{n-2}y_{n-2}+2^{n-3}y_{n-3}+...+2^{2}y_{2}+2^{1}y_{1}+2^{0}y_{0}Y=2n?1yn?1?+2n?2yn?2?+2n?3yn?3?+...+22y2?+21y1?+20y0?
2Y=2nyn?1+2n?1yn?2+2n?2yn?3+...+23y2+22y1+21y02Y=2^{n}y_{n-1}+2^{n-1}y_{n-2}+2^{n-2}y_{n-3}+...+2^{3}y_{2}+2^{2}y_{1}+2^{1}y_{0}2Y=2nyn?1?+2n?1yn?2?+2n?2yn?3?+...+23y2?+22y1?+21y0?
Y=2Y?Y=2n(yn?1?0)+2n?1(yn?2?yn?1)+2n?2(yn?3?yn?2)+...+23(y2?y3)+22(y1?y2)+21(y0?0)+20(0?y0)Y=2Y-Y=2^{n}(y_{n-1}-0)+ 2^{n-1}(y_{n-2}-y_{n-1})+ 2^{n-2}(y_{n-3}-y_{n-2})+...+2^{3}(y_{2}-y_{3})+ 2^{2}(y_{1}-y_{2})+ 2^{1}(y_{0}-0) + 2^{0}(0-y_{0})Y=2Y?Y=2n(yn?1??0)+2n?1(yn?2??yn?1?)+2n?2(yn?3??yn?2?)+...+23(y2??y3?)+22(y1??y2?)+21(y0??0)+20(0?y0?)
原始乘法思路:從低位到高位遍歷處理乘數(shù),1則加被乘數(shù),部分積右移,右移出的位不再參與之后運(yùn)算;0則不加,直接右移。
booth算法套用這種定位加再右移的框架,但重構(gòu)了乘數(shù)Y。也是對(duì)乘數(shù)從低位到高位遍歷。從低位后虛補(bǔ)一位0開(kāi)始,到最高位結(jié)束(實(shí)際上到次高位即可結(jié)束)。每次遍歷。當(dāng)前位與相鄰高位的差值作為該權(quán)下的bit值,為1則加被乘數(shù),為0則不加,為-1則加被乘數(shù)的變形補(bǔ)碼(減被乘數(shù),可用乘法分配率拆分乘數(shù)理解),之后則右移,更新位權(quán),完成一輪操作。
為什么Y的最低位的后一位要虛補(bǔ)一位0?
由錯(cuò)位相減式得知要如此;虛補(bǔ)0捕捉最低位的純1子串;補(bǔ)0原式值不變。
遍歷Y的最高位的前一位一定要補(bǔ)0嗎?是否遍歷到乘數(shù)Y的次高位即可?
由錯(cuò)位相減后的Y知,2n(yn?1?0)2^{n}(y_{n-1}-0)2n(yn?1??0)象征bit位中第n+1位的權(quán),處在溢出范圍,故無(wú)論乘數(shù)該權(quán)值為何皆算溢出而無(wú)影響。另外,事實(shí)上,由于此處0是把Y看做無(wú)符號(hào)數(shù)對(duì)最高位的0拓展(正常思維),也可以這樣理解,如果把Y看做有符號(hào)數(shù)對(duì)最高位作符號(hào)拓展,則拓展符號(hào)位,始終和原符號(hào)位yn?1y_{n-1}yn?1?保持一致,故差值一定是0,不影響乘法。
由于移位是為了下一次加法能對(duì)準(zhǔn)位權(quán),而第n+1次遍歷不加,故最后一次(第n次)遍歷完后不需右移部分積。但是,完成X×YX \times YX×Y,結(jié)果為n位高位部分積(每次遍歷時(shí)處理的部分積),n位低位部分積(接受高位右移溢出的bit位,同步作右移),為了使低位部分積“完全入座”,接收n個(gè)有效bit值(第n次遍歷做完可能的加法后,高位部分積共有n位有效bit值,低位部位積有n-1為有效bit值和最低位的1位空值),還需對(duì)整體進(jìn)行一次算術(shù)右移(可以發(fā)現(xiàn)一個(gè)特點(diǎn):高位部分積的最高兩位會(huì)是相等的)。故:總共做n次遍歷,若干次加法,n次移位。
順便說(shuō)一句,高位部分積應(yīng)采取n+1位的雙符號(hào)位形式,防止加法溢出。
總結(jié)
以上是生活随笔為你收集整理的计组-booth乘法-谈原理和实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 国家统计局统计指标
- 下一篇: 服务器被植入挖矿木马的心酸过程