實戰:浮點數的二進制表示

本文不會講解浮點數的表示原理,閱讀前請先補充前置知識,能夠先讀讀這幾篇文章: zh.wikipedia.org/wiki/IEEE_7… www.ruanyifeng.com/blog/2010/0…html

下面分別以 -0.2 和 9.1 爲例來推導浮點數的二進制表示,這裏只討論單精度,雙精度的推導方式是相似的。vue

整數部分二進制表示

將一個整數轉爲二進制的方法比較簡單:1. 該整數除以 2 獲得商和餘數,餘數做爲低位;2. 將商做爲整數繼續重複 1。web

因此 9.1 的整數部分轉換過程以下:工具

將餘數從右往左收集起來就獲得了 9.1 的整數部分的二進制表示方法:1001cdn

小數部分二進制表示

將一個小數轉爲二進制的方法跟整數相似,只不過除法要換成乘法:1. 該整數乘以 2 獲得積,若是大於等於 1,則二進制位爲 1,不然爲 0;2. 若積大於等於 1,則減去 1,新的數繼續重複步驟 1,不然原來的積繼續重複步驟1。htm

因此 -0.2 和 9.1 的小數部分分別表示以下 (左邊是高位,右邊是低位):blog

二進制科學計數法表示

-0.2:ip

.00110011001100110011001100 = 1.10011001100110011001100×2^(-3)內存

9.1:get

1001.00011001100110011001100 = 1.00100011001100110011001×2^(3)

浮點數三要素

獲得二進制的科學技術表示法後,浮點數的三要素就好計算了:

s f e
-0.2 1 10011001100110011001100 -3 + 127 = 124 = 01111100
9.1 0 00100011001100110011001 3 + 127 = 130 = 10000010

內存模型

最後,把三要素連在一塊兒獲得兩個數在內存中的實際存儲模型:

-0.2

9.1

最後附上幾個在線獲取二進制表示的小工具:

相關文章
相關標籤/搜索