計算機中二進制數乘法運算


引言

計算機組成原理中的基本知識,感覺有點繞,做個記錄。

一般乘法運算

-1101 X 1011為例

     -1101
     x1011
  --------------
      1101
     1101
    0000
   1101
-----------------
 0.10001111

計算機進行像這樣的乘法運算有兩大困難:一是將四個位積一次相加,機器難以實現;而是乘積位數增長了一倍,會造成器材浪費和運算時間增加。
所以計算機中對乘法運算進行了改進:

  • 我們把乘法運算時中間值稱為部分積,如:1101, 1101和下面的1101加和而成的100111。
  • 乘法運算可用移位和加法來實現,可以看到,本例需要進行四次乘法運算和四次加法運算(第一次乘完后看做與0000相加),每次加法運算時上面數的最后一位總是不參與運算,所以我們可以在每次運算后把最后一位存起來,每次做加法時只與原部分積的高位相加。
  • 被乘數與原部分積相加,然后右移一位形成新的部分積,同時,乘數也右移一位,由次低位作新的末位空出最高位放部分積的最低位。
  • 每次做加法時,被乘數僅僅與原部分積的高位相加,其低位被移至乘數所空出的高位位置。
    計算機很容易實現這種運算規則。用一個寄存器存放被乘數,一個寄存器存放乘積的高位,另一個寄存器存放乘數及乘積的低位,再配上加法器及其他相應電路,就可組成乘法器。又因加法只在部分積的高位進行,故不但節省了器材,而且還縮短了運算時間。

具體運算過程

還是以-1101 X 1011為例,采用雙符號位
補碼 -1101:11.0011; 1011:00.1011

部分積 乘數 說明
00.0000+11.0011=11.1001 1011 乘數為1。
11.1001+11.0011=10.1100 1101 乘數為1;計算前部分積為11.1001,末位為1,將乘數右移然后前面補1,然后再將部分積右移一位再進行運算。
11.0110+00.0000=11.0110 0110 乘數為0;部分積直接右移作為計算結果,乘數右移,補上上個部分積的末位
11.1011+11.0011=10.1110 0011 乘數為1;計算前部分積為11.0110,末位為0,將乘數右移然后前面補0,然后再將部分積右移一位再進行運算。

將10.1110右移一位然后接上乘數得11.01110001
原碼:1.10001111


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM