關於浮點數的記憶體結構

2021-06-09 07:03:07 字數 744 閱讀 8977

關於浮點數的記憶體結構

浮點數的記憶體結構

根據ieee的標準,浮點數的定義如下

符號位   指數字       小數部分      指數偏移量

單精度浮點數 1 位[31] 8位 [30-23]  23位 [22-00]  127

雙精度浮點數 1 位[63] 11 位[62-52] 52 位[51-00]  1023

我們以單精度浮點數來說明:

符號位,表述浮點數的正或者負

指數實際也有正負的,但是沒有單獨的符號位,而是採用了乙個偏移來表示

在計算機的世界裡,進製都是二進位制的,指數表示的也是2的n次冪

這個資料格式當中的,指數是8位,可表達的範圍是0到255

而對應的實際的指數是-127到+128

這裡特殊說明,-127和+128這兩個資料在ieee當中是保留的用作多種用途的

-127表示的數字是0

128和其他位數組合表示多種意義,最典型的就是nan狀態

小數部分,並不是乙個浮點數的實際的小數

實際的小數在這個小數前面還保留了乙個1

拿浮點數1.0來說

符號位是0, 實際指數是0,對應這裡的指數就是127了,也就是0x7f

而小數部分就是1.0了, 1是暗含的不儲存,實際的小數部分就是0了

因此組合起來的資料就是,0x3f80000

可以用乙個類來表示:

class floattype

}

浮點數記憶體結構

最近比較閒,開始看一些以前的基礎書,回顧一下以前的知識點,這裡分享看 c 反彙編與逆向分析技術揭秘 的一些總結。float型別在向整形型別轉換時,會向零取整,損失精度。浮點數編碼方式 符號 指數 尾數 float 4位元組 32位 1位符號 8位指數 其餘尾數 double 8位元組 64位 一位符...

關於浮點數

oi acm中經常要用到小數來解決問題 概率 計算幾何等 但是小數在計算機中的儲存方式是浮點數而不是我們在作數 算中的數,有精度的限制。以下以gun c 為準,其他語言 或編譯器 也差不了多少。本文競賽向。一 基礎篇 1 一般浮點數使用double,範圍為大概為 10 308 10 308,有效精度...

關於浮點數的比較

include int main return 0 這段 編譯會有警告 warning c4305 initializing truncation from const double to float 也就是說,初始化變數的時候,將double型截斷為float型,有精度損失.同理,則if語句裡面的...