先且看一到試題
答案最後來揭曉哈,,嘻嘻嘻,,,,,,,,,,
請看分析:
例:float a = 1.0;
(int) a :強制型別轉換(將int強制轉換成float)
(int*) a :強制指標轉換(例我們用malloc函式時常用)
(int &)a :將a的引用強制看成為int,即(記憶體裡的資料不做任何的變動)這樣就涉及到浮點數在c語言下的表示的知識了。
接著往下看,,水越來越深了,,哈哈哈,,
以float為4位元組(32bits)來看,,
符號位科學計數法指數
科學計數法尾數
31bit
30bit ~ 23bit
22bit ~ 0bit
符號位:佔1bit,0正1負
指數:佔8bits,
尾數:佔23bits,不夠在低位填充0
理論繞的很,,已近簡化很多了,,直接看例題吧,,就是這麼直接哈。。
首先:12.25f =(1100. 01)二進位制哈(這紅色加粗字型是重點了啊!!!)
正數:31bits = 0
由於是正數,紅粗字型的小數點左移到最高位後面,就移動了3位,即(1.10001)故指數十進位制表示為127+3=130
尾數部分22bit ~ 0bit照抄綠色加粗部分小數點後面的,,不足23bit低位填0
因此 12.25f 轉換後的ieee編碼為 0 1000 0010 10001......0(斜體部分一共23bit,,不夠補0,,怕少敲或多敲,乾脆省掉)
100.0f 轉換後的ieee編碼為 0 1000 0101 10001......0
1.0f 轉換後的ieee編碼為 0 0111 1111 0.....0
一樣的哈,,首先 -0.125f = (0.001)
負數:31bits = 1
由於是負數,紅粗字型的小數點右移到最低位後面,就移動了3位,即(0001.)故指數十進位制表示為127-3=124尾數部分22bit ~ 0bit照抄綠色加粗部分小數點後面的,都是0了,,不足23bit低位填0
浮點數0.0f 為全0
再回到題目,1.0f 按整型解釋就是2^29+2^28+2^27+2^26+2^25+2^24+2^23=1065353216 所以答案選d
本人小白一枚,,如幫你解決了疑惑點關注點贊都行,哈哈哈哈哈哈!!!
C語言中的浮點數比較
浮點數分為單精度和雙精度兩種。在記憶體中的儲存方式按照ieee754標準。通常情況下,單精度佔4個位元組,雙精度佔8個位元組。可以使用sizeof驗證一下。include int main 輸出結果為4 8 x和y變數在十進位制數值上是相等的都是0.1。但是0.1用二進位制表示的時候就會丟失精度,只...
浮點數的表示
在定點數表示中存在的乙個問題是,難以表示數值很大的資料和數值很小的資料。例如,電子的質量 9 10 28克 和太陽的質量 2 1033克 相差甚遠,在定點計算機中無法直接表示,因為小數點只能固定在某乙個位置上,從而限制了資料的表示範圍。為了表示更大範圍的資料,數學上通常採用科學計數法,把資料表示成乙...
浮點數的表示
日期 2010年6月 6日 1.前幾天,我在讀一本c語言教材,有一道例題 includevoid main void 執行結果如下 num的值為 9 pfloat的值為 0.000000 num的值為 1091567616 pfloat的值為 9.000000 我很驚訝,num和 pfloat在記憶...