Booth编码以及运算实例
生活随笔
收集整理的這篇文章主要介紹了
Booth编码以及运算实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用booth編碼,可以極大的減少在數字電路中,部分積的計算個數。
Booth編碼原則:
0 0 編碼 0
0 1 編碼 +1
1 0 編碼 -1
1 1 編碼 0
從上述編碼原則中可以看出來,對于連續的1,可以變成0,而連續的1前后的0,可以分別變成1 -1,或者 -1 1,這樣,就變成遞增一位后(也就是變成兩個數的加減)的加減,這就是減少運算的由來的原因。
如果還不理解,可以通俗的解釋,不一定準確,就是說 8*7,因為7有很多個1,即0111,我們可以通過某種方式,將0111變成 (+1)00(-1),也是四位,四個bit,這樣,需要連續的3個1,就變成了兩個數的加減法,即首位的+1和末尾的-1,試想,當中間的1很多時候,依然是變成兩個數的加減法,這樣會大大減少運算量?。
編碼時,現在待編碼的后面補0,如下?:
例子:求 0111的booth編碼
0 1 1 1 0(最后的0是補的)根據編碼規則,最后兩位是 1 0(0是剛補的那個),因此編碼為 -1,該 -1對應在 原編碼 0111的bit0的1上,?然后依次類推。下面給出了 兩個數直接相乘以及利用booth相乘的運算過程,大家體會一下,可以看出,明顯減少中間乘積項?。
運算實例中,也給出了 兩個正數,一正一負相乘的過程,當有負數的時候,不論是直接相乘還是利用booth相乘,中間部分積不再是簡單的直接相乘,而是要根據最終結果到底是正還是負,來判斷,如果是負數,則要填寫負數的補碼,并且最終還要擴充符號位?。
總結
以上是生活随笔為你收集整理的Booth编码以及运算实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LYNC2010两台虚机部署笔记2
- 下一篇: FPGA的学习:状态机的实现(三)