深入淺出 JVM (3) 浮點數

2022-03-28 01:57:51 字數 1551 閱讀 1095

1 10000001 01000000000000000000000

1 10000001 101000000000000000000000 如果指數字不全為 0 則尾數字首位+1 ,如果指數字全為 0,則尾數字首位+0

十進位制 = -1 * 2^(129-127) * (1 * 2^0 + 1 * 2^-2) = -1 * 4 * 1.25 = -5

5 = 101(b) = 1.01 * 2^2 指數為 2,則指數段的值為 2+127 = 129 = 10000001 因為不全為 0 尾數部分首位的 1 去掉,然後右側補全 0

1 負數

1 10000001 指數段的值為 2+127=129

1 10000001 101 尾數段為 101

1 10000001 01 因為不全為 0 尾數部分首位的 1 去掉

1 10000001 01000000000000000000000 然後右側補全 0,尾數部分一共23 位

除2取餘, (直到商為 0) ,逆序

789=1100010101(b)

394 1

197 0

98 1

49 0

24 1

12 0

6 03 0

1 10 1 (最終 商 < 1)

推理: a = abcdef(b)

a = f * 2 ^ 0 + e * 2 ^ 1+ d * 2 ^ 2 + c * 2 ^ 3+ b * 2 ^ 4 + a * 2 ^ 5

a/2 = e * 2 ^ 0+ d * 2 ^ 1+ c * 2 ^ 2 + b * 2 ^ 3 + a * 2 ^ 4 除以 2 留餘數得到 f

.... 除以 2 留餘數得到 d

..... 除以 2 留餘數得到 a

反過來寫就是 abcdef

乘2 取整,直到小數部分為 0(或者達到所要求的精度…),順序排列

0.8125 = (0.1101)(b)

1.6250 1

1.25 1

0.5 0

1.0 1

整數部分與小數部分合併

(789.8125) = 1100010101.1101(b)

|含義|數值|

|正無窮 | 0 11111111 00000000000000000000000 |

|負無窮 | 1 11111111 00000000000000000000000|

|nan | 0 11111111 10000000000000000000000|

|最大浮點數 | 0 11111110 11111111111111111111111|1.11111111111111111111111 * 2^(254-127)

|最小規範化正浮點數 | 0 00000001 00000000000000000000000|1.0 * 2^1-127|

|最小正浮點數 | 0 00000000 00000000000000000000000|

|0 | 0 00000000 00000000000000000000000|

作 者 : @mousycoder

原文出處 :

深入淺出 JVM (8) TLAB

tlab thread local allocation buffer 執行緒本地分配緩衝區 執行緒私有分配區,私有分配,公共檢視 占用 eden 區 預設 eden 的1 預設開啟,jvm 會為每乙個執行緒分配一塊 tlab 區域,避免堆物件共享造成的多執行緒執行緒同步。優化多執行緒堆空間分配物件...

深入淺出 JVM (8) TLAB

tlab thread local allocation buffer 執行緒本地分配緩衝區 執行緒私有分配區,私有分配,公共檢視 占用 eden 區 預設 eden 的1 預設開啟,jvm 會為每乙個執行緒分配一塊 tlab 區域,避免堆物件共享造成的多執行緒執行緒同步。優化多執行緒堆空間分配物件...

深入淺出 JVM (7) 棧上分配

迴圈建立1000000000乙個物件,阻止棧上分配 棧上分配條件 開啟逃逸分析 開啟標量替換 jvm 引數 server xmx10m xms10m xx doescapeanalysis xx printgc 使用 server 模式棄用逃逸分析 server xx doescapeanalysi...