1.手算乘法(鋪墊)
例子:13*(-11)= -143
被乘數不動,從乘數最低位開始,每一位乘上被乘數,將所得的結果(部分積)記下,再從比最低位高一位的數字開始如上迴圈,直至乘數的最高位也計算完畢。最終將每一豎列的數值相加即可得出結果。
按照我們小學所學的乘法計算公式應該如上圖所示沒有問題,我們教科書裡說的原碼一位乘法其實就是根據這個得出來的。
因為在計算過程中,我們發現被乘數是不動的,而是把乘數的每一位去乘上被乘數的每一位,每次結果都會左移一位。(看下圖)
但與普通乘法不同的是原碼一位乘法計算過程**現了進製c、部分積p和乘數暫存器y。
2.原碼一位乘法
還是上面那個例子。
因為13的原碼表示為 01101,(-11)的原碼表示為 11011。(第一位為符號位)由0和1異或的結果為1,表明結果為負數。故最終結果-10001111=-143與手算乘法結果一致,得以證明原碼一位乘法的正確性。
回顧一下,我們可以發現兩種方法的計算原理其實是類似的,原碼一位乘的計算過程中,每一次相加得出來的部分積在下一次相加之前之所以要右移一位,是因為下一次得出的部分積仍保持位置不動,而之前一次的部分積已經右移了一位,這就相當於手算乘法中的每一次部分積結果都要往左寫一位是一樣的,(手算乘法導致過程會越寫越長,而原碼一位乘中的部分積位數是固定的)。
原碼一位乘法和補碼一位乘法
原碼乘法遵循的規則如下 比如 a 0.1101,b 0.1011,求a b的積?詳細計算過程如下圖 符號位與符號進行計算.a的符號位為 1,b的符號位為 1.兩個符號進行異或運算最後的符號仍然是 1.數值位乘以數值位.a 0.1101,b 0.1011.我們採用雙符號位來進行計算.a 00.1101...
一位原碼的乘法規則 原碼一位乘法的實現演算法
原碼一位乘法的實現演算法 一 用原碼實現乘法運算是十分方便的。原碼表示的兩個數相乘,其乘積的符號為相乘兩數符號的異或值,數值則為兩數絕對值之積。假定 x 原 xsx1 x2 xn y 原 ysy1y2 yn 則 x y 原 x 原 y 原 xs ys x1x2 xn y1 y2 yn 結果是把符號位...
FPGA 設計乙個原碼一位乘法器
一 運算規則 x y p 引入部分積的概念,每次y的一位和x相乘的結果叫做部分積 每次相乘後需要右移一位,再處理y下一位的數值 1.符號位單獨計算 異或運算 符號組合就4種 00.01.11.10 異或運算即相同為0,不同為1 2.被乘數x 和乘數y 都取絕對值計算 3.一般把被乘數x取雙符號位,並...