你如何在java中获得浮点数的尾数?

use*_*725 7 java

我正在尝试获取浮点数的尾数(只是为了学习),但它没有按预期工作.

浮点数的结构

说5.3的尾数是53,对吗?我试过这段代码:

System.out.println(Float.floatToIntBits(5.3f) & 0x7FFFFF);
Run Code Online (Sandbox Code Playgroud)

它印了2726298.它不应该删除指数位并留下53?我尝试了很多东西,但总会发生这种情况.我在这做错了什么?

CMP*_*MPS 9

符合IEEE标准的单精度公式为:

(-1)^sign + 1.Mantissa x 2^(Exponent - Bias)
Run Code Online (Sandbox Code Playgroud)

所以5.3基地10是101.0100110011001100110011基地2

101.0100110011001100110011 = 1.010100110011001100110011*2 ^ 2

2 ^ 2 = 2 ^(exp - 偏差)具有偏差= 127(根据IEEE标准的单精度)
所以:exp - 127 = 2 => exp = 129基数10或10000001基数2

单精度表:

0 | 10000001 | 01010011001100110011001
Run Code Online (Sandbox Code Playgroud)

符号= 0
Exp = 129
尾数= 2726297