浮點數在C語言中的表示以及 int p使用

2021-09-20 04:05:47 字數 1745 閱讀 6108

先且看一到試題

答案最後來揭曉哈,,嘻嘻嘻,,,,,,,,,,

請看分析:

例: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在記憶...