浮點數的計算


對於浮點數的計算,首先可以看加減操作。浮點數的加減法分為5個操作:對階 尾數加減 規格化  舍入 判溢出五個步驟:

1)對階  將兩個科學記數法表示的數 的階數對齊。

   例如:9.85211*10^12 + 9.66007*10^10     (這里寫的是十進制數)

對於這種加法,階數小的數向階數大的數靠攏。這樣做的好處是方便處理尾數。

2)尾數相加減    加減法

3)規格化  規格化指的是讓尾數的首位有效(不是0),將尾數控制在0.01~1內

4)舍入  根據題目要求,有時候可能需要舍去幾位尾數。常見做法是四舍五入,或者直接暴力抹除並進1.

5)判溢出  因為階碼不能超過表示上限。

 

------

例題:十進制數x=- 5/256   y=+59/1024   按照補碼規則計算X-Y

(在此處規定浮點數標准為:階符2位,階碼3位,數符取2位,尾數取9位  階碼和尾數都使用補碼表示)

 

解答:  X 從十進制轉換為二進制,5->101    5/256-->101/2 那么-5/256--->-101/28--> -0.101*2-101

       Y:59-->111011   1/1024--->2-10    那么Y=59/1024--->0.111011* 2-100

將X和Y轉換為補碼形式:

  X:-101-->11101(原碼)-->11011(補碼)

  Y:-100--->11011(原碼)-->11100(補碼)     0.111011--->00 111011000(原碼、補碼)

   所以,X用補碼表示是11011 11 011000000   Y用補碼表示是11100 00 111011000    前面5位是階符和階碼,中間2位是數符,后9位是尾數。

 

  在完成數碼轉換后,進行浮點數的加減法:

  1) 對階:小階對大階

     求階差: 11011+00100=11111  x和y的階數相差為1    為了小階對大階,修改X的階碼。

     對齊:X的原碼形式階符+階碼是11101,加1以后變成11110,再取補碼得11010。再將尾數右移一位,尾數變成了-0.0101,再轉補碼就是11 101100000.補碼變成了11100 11 101100000

    -Y的補碼是11100 11 000101000

   X-Y的補碼=X的補碼+-Y的補碼,X+(-Y)= 11100 10 110001000

  注意:數符部分出現了10 ,說明計算過程中出現了進位溢出,稍后處理

 

  3)規格化:11100 10 110001000(補碼)--->-1.001111*2-100 --->-0.1001111*2-011   對應的機器碼變化是11100 10 110001000(補碼)---> 11101 11 011000100(補碼)

  4)舍入   這道題沒有要求舍去,所以不用處理

  5)判溢出   無最大最小溢出,無需處理

  

   


免責聲明!

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



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