booth算法原理的简单化理解「建议收藏」
最近,在學習帶符號二進制數乘法(multiplication of signed numbers)時接觸到了布思算法(booth algorithm)。由于是第一次接觸,對于其原理卻一無所知,書上的解釋以及網上的文章不知是自己才疏學淺還本來就是泛泛而談,沒有讓我了解其本質。經過長時間的思考分析,最終找到了一種比較簡單的理解方法。
舉一個簡單的例子,比如說計算10100001×00111110,在這里首先將乘數00111110改寫為01000000 – 00000010
即
01000000
– 00000010
—————————————————
001111110
這樣根據乘法分配律得10100001×00111110=10100001×(01000000-0000010)
類似于booth算法的重新編碼形式,再將上述算式改寫為
10100001×00111110=10100001×0+1 000000 + 10100001×000000 -1 0
最終再將上式合并到一起,可得由booth算法改寫后的編碼形式:10100001 × 0+10000-10
由此可見,乘數的數段”01″可以重新編碼為“+1”,數段“10”可以重新編碼為“-1”,數段“11”可重新編碼為“0”
根據無符號二進制數乘法的過程可知,當乘數段為“00”只是對乘數進行了右移操作,故重新編碼為“0”
由于上述推導過程是根據二進制數加減以及乘法分配律推導而來的,故對于由補碼表示的負數乘法同樣適用
(以上推導難免有誤,歡迎交流指正)
總結
以上是生活随笔為你收集整理的booth算法原理的简单化理解「建议收藏」的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 雅典娜献祭流小兵时间
- 下一篇: flash动画如何制作网页中演示类