回覆列表
  • 1 # 何以笙丶丶

    X的補碼為0.1010,-X的補碼為1.0110,Y的補碼為1.1001(低位有4位)。

    高位 低位(乘數補碼處理值) 說明

    00 0000 |110010 最低位10,高位加-X的補碼

    11 0110

    ————

    11 0110

    11 1011 01|1001 執行右移,最低位01,高位加X的補碼

    00 1010

    ————

    00 0101

    00 0010 10|1100 執行右移,最低位00,高位加0

    00 0000

    ————

    00 0010

    00 0001 010|110 執行右移,最低位10,高位加-X的補碼

    11 0110

    ————

    11 0111

    11 1011 1010|11 執行右移,乘數補碼被右移出去,進行最後一次

    00 0000 運算,最低位11,高位加0

    ————

    11 1011 1010|11

    最終結果為11.10111010,因為補碼一位乘結果用的是雙符號位,換成單符號位就是1.10111010。

    我總結了點補碼一位乘的方法,給你參考下

    處理物件:被乘數補碼*乘數補碼=兩數積的補碼。

    預處理: 1、單獨算出被乘數的相反數的補碼,同時乘數補碼往右擴一位補0(乘數補碼處

    理值),積的符號位與其餘位必須一同計算。

    2、兩數補碼相乘拆分為多個加法運算。

    3、每次加法運算分為高位和低位兩部分處理,高位初始值為0、位數是在帶符號被乘

    數位數基礎上向左擴一位(利於右移),低位初始值是乘數補碼處理值、位數與乘數

    資料位位數相同。

    第一次加:4、第一次加法是由高位和加數相加,加數的值由乘數補碼處理值的最低兩位確定

    (若為01,加數為被乘數補碼,若為10,加數為被乘數的相反數的補碼,若這兩位

    的數值相等,則加數為0;加數左邊多餘的一位根據其符號位確定補0還是補1,符

    號位為0則補0,符號位為1則補1)。

    5、此次加法運算結束後,加法運算所得的高位(部分積)與低位合成一個整體並右移1

    位得到新的高位和低位(右移時左邊補0還是補1由右移前的符號位確定,符號位為

    0則補0,符號位為1則補1,,另外在右移時乘數補碼處理值也連帶著右移)。

    第二次加:6、高位再次進行加法處理,加數的值由新得到的乘數補碼處理值的最低兩位確定(確

    定方法同第4點)。

    7、此次加法運算結束後,加法運算所得的高位(部分積)與低位合成一個整體並右移1

    位得到新的高位和低位(右移時高位左邊補0或1的確定方法同第5點,另外在右移

    時乘數補碼處理值也連帶著右移)。

    迴圈加法:8、按“第二次加”的方法迴圈,直至低位將乘數補碼處理值的每一位都右移出去後,

    再進行一次加法運算(此次加法運算結束後不進行右移),此時得到的高位和低位

    合成一個整體就是最終乘積,這個最終乘積是雙符號位。

    9、所得的最終乘積的小數位數必須是被乘 數補碼與乘數補碼的小數位數之和。

    關於雙符號位:00 正,11 負,01 上溢,10 下溢。

    附註:無論是原碼一位乘,還是補碼一位乘、補碼二位乘,與手工演算法都有共通之處,都是根據

    乘數每一位(或兩位) 的狀態在被乘數的基礎上來確定加數(如被乘數、被乘數補碼、被

    乘數相反數補碼、0),因為乘數是二進位制的, 每一位只有0、1兩種狀態,所以又免去

    了手算十進位制乘法中以乘數每一位去乘被乘數來確定加數的過程,而右 移所得的部分

    積就相當於手算乘法中左移加數。

  • 中秋節和大豐收的關聯?
  • 聯想家悅u主機板跳線和機箱怎麼連線?