推 liataian:謝謝解答! 非常有幫助 另外寄信詢問囉^^ 07/24 01:44
※ 編輯: seal0112 來自: 118.167.245.204 (07/24 22:48)
※ 引述《liataian (柴油)》之銘言:
: 不好意思小弟才疏學淺 第一次讀計組 表達不清楚請見諒~
: 我想問一下張凡課本裡面有個傳統乘法的流程圖
: 其中shift the multiplicand register left 1 bit
: 然後shift the multiplier register right 1 bit
: 這兩句話是什麼意思呀? 我搞了好久都搞不懂..
: 雖然後面張凡有個例題有解釋流程運作
: 可是沒有圖像說明我還是不太清楚那個原理...
: 例如0010x0011
: 傳統乘法就是 0010
: x 0011
: ---------
: 0010
: 0010
: 0000
: + 0000
: ------------
: 0000110
: 我比較想知道
: 如果按照流程圖走 "multiplicand左移1 bit" 跟 "multiplier右移1 bit"
: 上面的0010x0011每一步會變成什麼樣子..
: 可能表達不是很完整
: 希望版友知道我在說什麼..
: 還是對於考試來說 我只要知道乘法就是這樣走流程就好了 不用管那麼多呢?
: 謝謝^^
你假想把0011與0010放進電路圖的mulitplier與mulitplicand裡
然後跑一遍演算法應該就可以了解了
0010
x 0011
---------
0010
0010
0000
+ 0000
------------
0000110
傳統乘法multiplier要由最右邊的bit依序往左邊一個一個位元抓取資料
而設計電路時邊移動邊抓資料是非常難以設計電路的
往右移的原因
是利於control unit可以在multiplier的最右邊就抓到要運算的資料
乘法運算時mulitplier會有權重問題 越左邊的bit代表越大的值
如果第一次運算做完multiplier往右移的話
假設我們已經做完第一次運算 只有multiplier往右移而繼續做運算的話
(1) 0010
x 0011
--------
0010
(2) 0010
x 0001<-----往右移一個bit
---------
0010
(3) 0010
x 0001
---------
0010
0010
(4) 0010
x 0000<-----往右移一個bit
---------
0010
0010 應該已經發現有什麼差異了吧
如果只把multiplier往右移的話 它原本的權重就會被忽略掉
所以把multiplicand往左移就會把消失的權重補回來
(1) 0010
x 0011
--------
0010
(2) 00100<-----往左移一個bit
x 0001<-----往右移一個bit
---------
0010
(3) 00100
x 0001
---------
0010
00100
(4) 001000<-----往左移一個bit
x 0000<-----往右移一個bit
---------
0010
00100
照著演算法跑 如果4個位元就要做4次喔 (1),(2)這樣算一個步驟唷
後面幾個電路
我建議先看懂電路圖的運作再看下面的演算法會比較容易理解
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.228.104.69