第二章 運算方法與運算器(浮點數的加減法,IEEE754標准32/64浮點規格化數)


這一章,主要介紹了好多種計算方法。下面,寫一點自己對於有些計算(手寫計算過程)的見解。


 

  • 1.原碼、反碼、補碼

  原碼:相信大家都會寫,符號位在前二進制數值在后,湊夠位數即可。

  反碼:原碼符號位不變,其他位全部取反。

  補碼:反碼末位加一 / 原碼符號位不變,從右往左數第一個1及其右邊的各位不變,其余位全部取反

  • 2.IEEE754的轉換

  IEEE754標准32/64浮點規格化數形式:X = (-1)* 1.M * 2E-127(其中,S-階符,M-尾數,E-階碼)

    32位的規格化浮點數:SEM00000...(即二進制SEM后面補0,寫夠32位)

  以27/64為例:

    ①化形式:27/64 = + (1.1011)* 2-2 

    ②找SEM:S=0,M=1011,E=(125)10=(01111101)2

    ③寫結果:00111110 11011000 00000000 00000000 = (3ED800)16

  • 3.變形補碼計算加減法

  變形補碼沒什么稀奇,不過是符號位變成兩位而已(00為正,11為負),它的價值在於可以作溢出判斷(結果00//11表示未溢出,01-上溢(所謂上溢符號位還是0),11-下溢(下溢符號位還是1)),就正常求補碼(符號位double),放在一起加和,做溢出判斷,最后別忘了把補碼再轉換回原碼作為最終結果。

  x+y:

   以x=11011, y=00011為例:

    ①求補:[11011]=0011011, [00011]=0000011

    ②加和:011011 + 000011 = 0011110;符號位00,未溢出,故x+y=11110

  x-y:(這里把減法化為加法,即 x-y = x+(-y),另外[-y] = [y] 從右往左數第一個1及其右邊的各位不變,其余位全部取反,這次連帶符號位也要取反)

   以x=11011, y=-11111為例:

    ①求補:[11011]=0011011, [-11111]=1100001,[-y]=0011111

    ②加和:[x]+[-y] = 0011011 + 0011111 = 0111010;符號位01,正溢(上溢);故x-y=+111010

  • 4.浮點數加減法(我用的是補碼計算)

  這里面涉及的東西比較多,每一步都需要仔細,錯一步結果就錯了。

  ①求補對階

  ②尾數求和

  ③規格化

  ④舍入處理

  ⑤溢出判斷

  ⑥寫結果

例子后面給


 


免責聲明!

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



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