二進制乘法運算


1.定點數一位乘法

1.1定點原碼一位乘法

原碼相乘,積符號同號得正、異號得負,數值為兩數絕對值之積。

例:X=0.1101,Y=0.1011,求兩數之積

解:取雙符號位

在這里插入圖片描述

部分積右移時,乘數寄存器同時右移一位。計算用兩位符號,結果保留一位符號。

X*Y=0.10001111

在這里插入圖片描述

Cd是乘數位數的補碼值,每計算一次減一次。

Cn是C寄存器中Y的最低位,為1則部分積加X,為0則部分積加0。

1.2定點補碼一位乘法

被乘數 [X]=X0.X1X2...Xn,乘數 [Y]=Y0.Y1Y2...Yn

[X* Y]=[X](0.Y1Y2...Yn)-[X]* Y0

Y0=1即Y為負數時,需要補充-[X]* Y0這一項,Y0=0即Y為正數時,不用這一項。剩下步驟和定點一位乘法一樣,右移帶符號。

布斯公式

[X * Y]=[X] * (-Y0+Y12-1+Y22-2+...+Yn2-n)=[X]補*$\sum_{i=1}^n (Yi+1-Yi)2^i$

Yi+1與Yi為相鄰兩位,(Yi+1-Yi)有0,1和-1三種情況,其運算規則如下:

  • (1) Yi+1-Yi=0(Yi+1Yi=00或11),部分積加0,右移1位。

  • (2) Yi+1-Yi=1(Yi+1Yi=10),部分積加[X],右移1位。

  • (3) Yi+1-Yi=-1(Yi+1Yi=01),部分積加[-X],右移1位.

  • 最后一步(i=n+1)不移位。

1.3定點原碼二位乘法

乘數都用原碼,兩位乘數有四種組合:

00:0*X。部分積PI右移兩位。

01:1*X。部分積Pi+X,右移兩位。

10:2*X。部分積Pi+2X,右移兩位。

11:3*X。部分積Pi-X+4X,右移兩位。

原碼兩位乘法規則表

YI-1 YI C 操作 操作
0 0 0 (PI+0)2-2 0->C
0 0 1 (PI+X)2-2 0->C
0 1 0 (PI+X)2-2 0->C
0 1 1 (PI+2X)2-2 0->C
1 0 0 (PI+2X)2-2 0->C
1 0 1 (PI-X)2-2 1->C
1 1 0 (PI-X)2-2 1->C
1 1 1 (PI+0)2-2 1->C

若最后一次操作欠下+4X,則最后一次右移兩位后還應補充+X操作,且不再移位。

1.4定點補碼二位乘法

Yn-i-1 Yn-i Yn-i+1 組合值 [pi+2]
0 0 0 0 ([PI]+0)2-2
0 0 1 1 ([PI]+[X])2-2
0 1 0 1 ([PI]+[X])2-2
0 1 1 2 ([PI]+2[X])2-2
1 0 0 -2 ([PI]+2[X])2-2
1 0 1 -1 ([PI]-[X])2-2
1 1 0 -1 ([PI]-[X])2-2
1 1 1 0 ([PI]+0)2-2

2.浮點數加減法運算

X=MX2Ex, Y=MY2Ey,均為規格化數。

  1. 對階

求出$$delta(E)$$=EX-EY,保留大的那個,將小的那個的尾數右移delta(E)位,使X和Y階碼相等,過程中原碼表示的符號位不移位,補0;補碼表示的尾數保持符號位不變。

  1. 尾數加減

對階后,尾數進行運算。

  1. 規格化

使尾數絕對值以最大值形式出現。

雙符號原碼規格化尾數:00.1xxxxx或11.1xxxxx

雙符號補碼規格化尾數:00.1xxxxx或11.0xxxxx

規則:

  1. 若結果的兩符號位不同,表示溢出,尾數右移1位,階碼加1,“右規”。
  2. 若結果兩符號位相同,表示不溢出,若最高數值位和符號位同,尾數連續左移,until不同,階碼減去移位數,“左規”。
  1. 舍入

右規或對階時,尾數低位的數值會失去,為提高精度,采取0舍1入

  1. 檢查階碼是否溢出

階碼溢出表示浮點數溢出。在三四步都可能溢出。

若正常,end;

若下溢,置機器零;

若上溢,則OF=1。


免責聲明!

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



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