看板 Grad-ProbAsk 關於我們 聯絡資訊
※ 引述《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
liataian:謝謝解答! 非常有幫助 另外寄信詢問囉^^ 07/24 01:44
※ 編輯: seal0112 來自: 118.167.245.204 (07/24 22:48)