java虛擬機中的浮點數分為float和double兩種,分別為32位和64位.它參考了IEEE 754的規范對浮點數進行處理,下面以float為例 ,分析一下float數的表示方法.
float的32位分成三個部分來表示一個浮點數:

浮點數的取值計算公式為:

決議:
1) 當符號位s的取值為0時,sflag為1, 當s為1時,sflag為-1. 所以有:

2) e 為指數位,用 8 位表示
3) m 為尾數值,占用空間為23位,但是根據 e 的取值,有 24 位精度,所以引入了一個附加位,規則如下: m的值會根據e的值會動態變化, 當8個指數位e全部為0,尾數位m附加0(在左邊附加),否則,附加1.
以-5的表示為:
System.out.println( Integer.toBinaryString(Float.floatToRawIntBits(-5)) );
結果為:
1 1000 0001 0100 0000 0000 0000 0000 000
符號位 指數位 尾數位
指數位1000 0001不全為0,所以尾數位(從左邊)附加1,實際 尾數位為:
1 + 010 0000 0000 0000 0000 0000 = 1010 0000 0000 0000 0000 0000
按照上面的公式:
![]()
計算各部份的值:
1) sflag: -1
2) m的計算復雜點,尾數位表示2的指數次方的和,計算程序:

3) 尾數位:

所以,結果為:
![]()
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/241380.html
標籤:其他
上一篇:2020-12-27
下一篇:NTU-RGB+D資料集
