Booth編碼以及運算例項

2021-10-01 22:12:09 字數 975 閱讀 6034

使用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相乘,中間部分積不再是簡單的直接相乘,而是要根據最終結果到底是正還是負,來判斷,如果是負數,則要填寫負數的補碼,並且最終還要擴充符號位​。

days2 編碼基礎知識以及運算

1.分類與基本區別 ascii 最早的編碼,8位1位元組 unicode 萬國碼,32位4位元組 gbk 國標碼,16位2位元組 utf 8 可變長度碼 英 8位1位元組 歐 16位2位元組 漢 24位3位元組 8位 1位元組 8bit 1byet 1024byet 1kb 1024kb 1mb 1...

優化以及例項

ai問題 模型 優化 優化是使用一些工具進行解決 sgd adm等各種演算法進行優化 那麼怎麼選擇優化演算法?將得到的模型和問題,能夠明確知道屬於哪些問題,從而選擇正確的方法。並不是使用演算法就好了,也要加一些東西 比如正則化。objective function 目標函式,由目標函式分類,選擇相應...

位運算例項

位運算子 與 或 異或 非 左移運算子 右移運算子 1 例項一 給定字母字串a和字串b,判斷a是否包含所有字母b。這題有很多解法,讓我們回憶一下,最常用的陣列如何解呢。我們維護乙個26長度的陣列,a.z對應陣列的下表是1.26,每個index對應的取0或1,如果存在即為1,如果不存在即為0。遍歷字元...