IEEE754標準浮點數表示與舍入
阿新 • • 發佈:2020-12-02
原文地址:https://blog.fanscore.cn/p/26/
友情提示:本文排版不太好,但內容簡單,請耐心觀看,總會搞懂的。
1. 定點數
對於一個無符號二進位制小數,例如101.111
,如果我們要用2個位元組即16位來儲存它,我們可以約定用高8位儲存小數點前的數字,用低8位儲存小數點後的數字,這樣的話它在儲存空間中就是這樣的:00000101.11100000
。這種儲存方式中小數點的位置是固定的,這稱為定點數。這種儲存方式有個問題那就是儲存的數值是有上限的即11111111.11111111
= 27+26+25+24+23+22+21+20+2-1+2-2+2-3+2-4+2-5+2-6+2-7+2-8。如果我們要儲存1111111111111111.
基於這個缺點,計算機中通常用浮點數來表示一個小數。
2. 浮點數
IEEE754標準使用V = (-1)s × M × 2E表示浮點數,符號位(sign)s 決定該數是正數(s=0)還是負數(s=1),尾數(significand)M是一個二進位制小數,階碼(exponent) E。
單精度浮點數中,s佔用1位,M佔用23位,E佔用8位,總共32位,雙精度浮點數s佔1位,M佔52位,E佔11位,總共64位,這兩種分別對應C中的float和double,另外還有一個擴充套件雙精度它佔用80位。
根據E值,浮點數有三種情況,
2.1 規格化的:E所有位既不全為0也不全為1。
在這種情況中,階碼被解釋為以偏置(biased)形式表示的有符號整數,這時E的值表示為E=e-Bias,其中e為E所佔位所表示的無符號整數,Bias=2E所佔位數-1。舉個單精度浮點數的