1. 程式人生 > 實用技巧 >IEEE754標準浮點數表示與舍入

IEEE754標準浮點數表示與舍入

原文地址: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.

這個數的話,用這個儲存方式是無法儲存的,但是實際上對於這個數來說16位的儲存空間是夠用的,就是說定點數存在空間浪費的缺點。

基於這個缺點,計算機中通常用浮點數來表示一個小數。

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。舉個單精度浮點數的