十六进制浮点文字

Shi*_*han 6 java floating-point hex

如何0x12.2P2等于72.5?

我知道P之后的值,称为二进制指数,表示数字乘以2的幂?

Syl*_*oux 17

0x12.2P2是0x122/16 10*2 2

  • 0x122 = 290 10
  • 除以16 10 = 18.125 10
  • 乘以2 2导致72.5 10

(?)更正式地说,对于部分之前P,你可以用这个非常经典的转换表:

     decimal point here  ?
+-----+-----+-----+-----+-+-----+-----+-----+
| 16³ | 16² | 16¹ | 16? | | 16?¹| 16?²| 16?³|
+-----------------------------------------+
|     |     |  1  |  2  |.|  2  |     |     |
+-----+-----+-----+-----+-+-----+-----+-----+
Run Code Online (Sandbox Code Playgroud)

所以0x12.2是1⨯16¹+2x16⁰+2⨯16-1 = 18.125