浮點型別的儲存方式

2021-07-24 21:12:28 字數 1581 閱讀 2272

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...