最近比較閒,開始看一些以前的基礎書,回顧一下以前的知識點,這裡分享看《c++反彙編與逆向分析技術揭秘》的一些總結。
float型別在向整形型別轉換時,會向零取整,損失精度。
浮點數編碼方式:符號、指數、尾數
float:4位元組(32位),1位符號、8位指數、其餘尾數
double:8位元組(64位),一位符號、11位指數、其餘尾數
指數計算+127原因:ieee編碼方式規定,因為最高位代表符號,所以當指數域小於0111111時為乙個負數,反之為正數,故0111111表示0
浮點數與0作比較方法:做區間比較,
//判斷ffloat 是否為0
float ftemp = 0.0001f;
if( ffloat >= -ftemp && ffloat <= ftemp )
浮點數判0做區間比較原因:部分小數轉換為二進位制數會得到乙個無窮值,會根據尾數長度捨棄多餘部分,所以會有一定誤差,故採用此種方法
關於浮點數的記憶體結構
關於浮點數的記憶體結構 浮點數的記憶體結構 根據ieee的標準,浮點數的定義如下 符號位 指數字 小數部分 指數偏移量 單精度浮點數 1 位 31 8位 30 23 23位 22 00 127 雙精度浮點數 1 位 63 11 位 62 52 52 位 51 00 1023 我們以單精度浮點數來說明...
浮點數 儲存
關鍵字 體系結構 ieee754 浮點數 儲存 main 如果不執行上面的 讓我們來直接判斷,輸出的結果會是什麼?而在你執行程式之後,結果卻很讓人詫異 123.456001。為什麼會是123.456001?有六位小數可以理解,最後那個1是為何?有很多人解釋說最後那個1是亂碼,隨機的。嘿嘿 其實無論你...
浮點數操作
float fx 49.03f int nx fx 100 printf d nx 執行上述 結果 4902。用vc6.0,2005,gcc編譯執行結果都是一樣。為什麼會這樣呢,是因為浮點數運算具有不精確性。其實編譯上面的 編譯器會有警告的。warning c4244 initializing co...