最近乙個專案,需要在eeprom中儲存浮點數,於是想到浮點數佔四個位元組,直接移位,發現得到的char型是0,看來這個方法不可行。搜尋論壇,高人提議用聯合體來解決,聯合體看似與結構體相似,其不同之處在於結構體中每個變數占用不同的記憶體,而聯合體共用一段記憶體,這就給儲存浮點數提供了極大的便利。
比如我要儲存乙個浮點數a,我定義乙個聯合體
union
float x;
uchar s[4];
}f32_sep;
然後把a的值賦給f32_sep.x,這樣一來其實s[0]對應了浮點數的最高位,s[3]對應其最低位,因此,儲存到eeprom中只需將s[0]~s[3]即可。
**:
浮點數在記憶體中儲存方式
浮點數在記憶體中的儲存方式為 符號位 指數 尾數 符號位 表示浮點數是正數還是負數。0表示正數,1表示負數 指數 指數部分。類似於科學技術法中的m 10 n中的n,只不過這裡是以2為底數而不是10。需要注意的是,這部分中是以2 7 1即127,也即01111111代表2 0,轉換時需要根據127作偏...
浮點數 儲存
關鍵字 體系結構 ieee754 浮點數 儲存 main 如果不執行上面的 讓我們來直接判斷,輸出的結果會是什麼?而在你執行程式之後,結果卻很讓人詫異 123.456001。為什麼會是123.456001?有六位小數可以理解,最後那個1是為何?有很多人解釋說最後那個1是亂碼,隨機的。嘿嘿 其實無論你...
浮點數的儲存
浮點數在計算機中的儲存格式 符號位 指數字 尾數字 符號位 指數字 尾數字 float 1位 8位 23位 共32位 double 1位 11位 52位 共64位 任何浮點數都可表示為 1.m 2e 符號位 sign 表示式中的 0表示正數,1表示負數。指數字 exponent 表示式中的e,指數字...