1、浮點數是如何儲存的
首先應先了解浮點數的儲存方式。以float為例。float一共佔4個位元組,共32位。分為3部分:符號位、指數字和尾數字。分別佔1位、8位和23位,儲存結構如圖1所示。
另外,double型別,8位元組,共64位;符號位1位,指數字11位,尾數字52位;
2、如何把十進位制浮點數轉成二進位制浮點數
例如:把20.5和20.3轉成二進位制浮點數
20.5 ->10100.1
首先把浮點數分成兩部分,整數部分和小數部分,分別為20和0.5,20表示成二進位制為10100
小數部分轉成二進位制的方法如下:
0.5x2 = 1.0(1) (小數部分的值乘以2所得的值再減去其整數部分的值)
0x2 = 0(0) ...
20.3 ->10100.0100110011001....
0.3x2 = 0.6(0)
0.6x
2 = 1.2(1)
0.2x2 = 0.4(0)
0.4x2 = 0.8(0)
0.8x2 = 1.6(1)
0.6x2 = 1.2(1)
0.2x2 = 0.4(0)
0.4x2 = 0.8(0)
0.8x2 = 1.6(1)
..................
3、將浮點數儲存在一組位元組中
上面我們把浮點數轉換成二進位制浮點數,20.5表示成10100.1, 20.3表示成10100.010011001...
我們把二進位制浮點數用科學計數法的形式表示,例如:
20.5 表示成 1.01001e(100) ->100 = 4
20.3 表示成 1.0100010011001...e(100)
根據上面的介紹,我們知道float和double浮點數在記憶體中是由三部分組成,那是如何定義這三部分的數 據的呢,下面以20.5和20.3介紹這三部分的資料是如何定義儲存的。
例如:20.3 符號位0表示正數,1表示負數 ,因此符號位為0
指數字,根據上面科學計數法得知20.3的指數為100,但是指數並不是100,而在指數100加上對應值, float是127(01111111),double是1023(01111111111),因此得到的指數字是 10000011(float),10000000011(double)
尾數字,對應的就是科學計數的尾數,後面沒有的補0,float(100000...)
4、如何將浮點數以二進位制輸出
#include #include void main()
}
浮點型別的儲存
在c語言中,單精度 float 資料型別為32bits,分三部分 sign 符號位,1 bit,0為正,1為負 exponent bias 指數部分,8 bits,儲存格式為移碼儲存,偏移量為127 mantissa fraction 尾數部分。同理,雙精度 double 佔64位,三部分分別為 1...
浮點型別儲存
對於浮點型別的資料採用單精度型別 float,4位元組 和雙精度型別 double,8位元組 來儲存。根據國際標準ieee 754標準規定,無論是單精度還是雙精度在儲存中都分為三個部分 1 符號位 sign 0代表正,1代表為負 2 指數字 exponent 用於儲存科學計數法中的指數資料,並且採用...
浮點數型別在記憶體之中的儲存方式
3.14159 1e10 浮點數家族包括 float double long double型別。浮點數表示的範圍 float.h中定義 浮點數儲存的例子 int num 9 float pfloat float printf num 的值為 d n num printf pfloat 的值為 f n...