當前位置:首頁 » 存儲配置 » double內存存儲

double內存存儲

發布時間: 2022-09-26 05:57:44

『壹』 c語言中float和double的區別!

區別:

1、精度不一樣,float是單精度,double是雙精度;

2、表示小數的范圍不一樣,double能表示的范圍比float大;

3、double在內存中,佔8個位元組,float在內存中,佔4個位元組。

float:浮點型數據類型,FLOAT 數據類型用於存儲單精度浮點數或雙精度浮點數。浮點數使用IEEE(電氣和電子工程師協會)格式。浮點類型的單精度值具有 4 個位元組,包括一個符號位、一個 8 位 二進制指數和一個 23 位尾數。由於尾數的高順序位始終為 1,因此它不是以數字形式存儲的。此表示形式為 float 類型提供了一個大約在 -3.4E+38 ~ 3.4E+38 之間的范圍。

double:雙精度浮點型,此數據類型與單精度數據類型(float)相似,但精確度比float高,編譯時所佔的內存空間依不同的編譯器而有所不同,是double float數據類型,C/C++中表示實型變數的一種變數類型。

(1)double內存存儲擴展閱讀:

浮點型數據

1、float型

編譯系統為每一個float型變數分配4個位元組,數值以規范化的二進制數指數形式存放在存儲單元中。

2、double型

為了擴大能表示的數值范圍,用8個位元組存儲一個double型數據,可以得到15位有效數字。

3、long double型

不同的編譯系統對long double型的處理方法不同,Visual C++6.0對long double型和double一樣處理,分配8個位元組。

網路-float

網路-double

『貳』 C語言中float,double等類型,在內存中的結構

從存儲結構和演算法上來講,double和float是一樣的,不一樣的地方僅僅是float是32位的,double是64位的,所以double能存儲更

高的精度。

任何數據在內存中都是以二進制(0或1)順序存儲的,每一個1或0被稱為1位,而在x86CPU上一個位元組是8位。比如一個16位(2

位元組)的short int型變數的值是1000,那麼它的二進製表達就是:00000011 11101000。由於Intel CPU的架構原因,它是按位元組倒

序存儲的,那麼就因該是這樣:11101000 00000011,這就是定點數1000在內存中的結構。

目前C/C++編譯器標准都遵照IEEE制定的浮點數表示法來進行float,double運算。這種結構是一種科學計數法,用符號、指數和

尾數來表示,底數定為2——即把一個浮點數表示為尾數乘以2的指數次方再添上符號。下面是具體的規格:

````````符號位 階碼 尾數 長度
float 1 8 23 32
double 1 11 52 64
臨時數 1 15 64 80

由於通常C編譯器默認浮點數是double型的,下面以double為例:
共計64位,摺合8位元組。由最高到最低位分別是第63、62、61、……、0位:
最高位63位是符號位,1表示該數為負,0正;
62-52位,一共11位是指數位;
51-0位,一共52位是尾數位。

按照IEEE浮點數表示法,下面將把double型浮點數38414.4轉換為十六進制代碼。
把整數部和小數部分開處理:整數部直接化十六進制:960E。小數的處理:
0.4=0.5*0+0.25*1+0.125*1+0.0625*0+……
實際上這永遠算不完!這就是著名的浮點數精度問題。所以直到加上前面的整數部分算夠53位就行了(隱藏位技術:最高位的1

不寫入內存)。
如果你夠耐心,手工算到53位那麼因該是:38414.4(10)=1001011000001110.(2)
科學記數法為:1.001……乘以2的15次方。指數為15!
於是來看階碼,一共11位,可以表示範圍是-1024 ~ 1023。因為指數可以為負,為了便於計算,規定都先加上1023,在這里,

15+1023=1038。二進製表示為:100 00001110
符號位:正—— 0 !
合在一起(尾數二進制最高位的1不要):
01000000 11100010 11000001 11001101 01010101 01010101 01010101 01010101
按位元組倒序存儲的十六進制數就是:
55 55 55 55 CD C1 E2 40

『叄』 c語言中double和float它們存儲時分別占據多大的內存空間

double 中文譯為雙精度浮點數,一般稱雙精度數,它在內存中佔用8個位元組(位、bit)的空間;float 中文譯為單精度浮點數,一般就稱為浮點數,它在內存中佔用4個位元組的空間。

『肆』 double型數據在內存中是怎麼存儲的

表示分配的內存的存儲數據的類型!這決定了分配內存的實際大小!因為不同類型的數據在內存中所佔據的空間是不同的!

『伍』 double類型的數據是怎樣分配到內存中的呢

立刻動手寫一小段測試代碼就知道了:
int main(int argc, char ** argv)
{
int i;
double x = 123456789.123456789;
unsigned char* ptr = (unsigned char*)&x;
for(i=0; i<sizeof(x); i++)
printf("%02X ", ptr[i] );

printf("\n");

int y = 0x1234;
ptr = (unsigned char*)&y;
for(i=0; i<sizeof(y); i++)
printf("%02X ", ptr[i] );

printf("\n");

return 0;
}

我的系統(X86CPU, RedHat FC,G++編譯器)輸出的結果是:
75 6B 7E 54 34 6F 9D 41
34 12 00 00

容易看得出來,整數0x1234使用4位元組(0x34 0x12 0x00 0x00)內存表示,但是double的8位元組就很難一眼看明白了。

為什麼呢?因為浮點數在計算機中不像整數那樣簡單的使用數值表示,它使用的是科學計數法,通常由正負符號、數字、冪3部分組成,因此它可以表示很大數或者很小的數,但其精度是有限的,比如float只有6位數字的精度,而double一般也只有10位數字精度。

至於一個在內存中佔8位元組64位的浮點數,哪幾位表示數字,哪幾位表示冪,完全取決於編譯器的實現,很可能MS VC的結果就和上面的不同。

指針和內存一直都是C或者C++較難的地方,因為這部分內容和計算機體系以及編譯器的實現都有關系,就拿上面最簡單的整數0x1234來說,在其他體系的計算機中,很可能是以0x00 0x00 0x12 0x34來表示的(在socket通信中經常碰到這種情況,樓主如果好奇可以按關鍵字"網路位元組序"搜搜)

『陸』 c語言中double和float它們存儲時分別占據多大的內存空間

double
中文譯為雙精度浮點數,一般稱雙精度數,它在內存中佔用8個位元組(位、bit)的空間;float
中文譯為單精度浮點數,一般就稱為浮點數,它在內存中佔用4個位元組的空間。

『柒』 C語言中DOUBLE型數據儲存結果

float與double類型的內存分布,精度和范圍
內存分布:
C/c++的浮點數據類型有float和double兩種。
float大小為4位元組,內存中的存儲方式如下:
符號位(1bit)指數(8bit)尾數(23bit)
double大小為8位元組,內存中的存儲方式如下:
符號位(1bit)指數(11bit)尾數(52bit)
符號位決定浮點數的正負,0正1負。指數和尾數均從浮點數的二進制科學計數形式中獲取。
如,十進制浮點數2.5的二進制形式為10.1,轉換為科學計數法形式為(1.01)*(10^1)。
由此可知指數為1,尾數(即科學計數法的小數部分)為01。
根據浮點數的存儲標准,指數用移碼表示。0的float類型移碼為127(0111 1111),0的double類型移碼為1023(011 1111 1111)。運算時,在0 的移碼基礎上加指數,得到的就是內存中指數的表示形式。尾數則直接填入,如果空間多餘則以0補齊,如果空間不夠則0舍1入。
所以float和 double類型分別表示的2.5如下(二進制):
符號位 指數 尾數

0 1000 0000 010 0000 0000 0000 0000 0000

0 100 0000 0000 0100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
精度:
float和double的精度是由尾數的位數來決定的。
float:2^23 = 8388608,一共七位,這意味著最多能有7位有效數字,但絕對能保證的為6位,也即float的精度為6~7位有效數字; double:2^52 = 4503599627370496,一共16位,同理,double的精度為15~16位。
范圍:
float類的指數是8位移碼,最大為127最小為-127,127用來作2的指數,為2^127,約等於 1.7014*10^38, 而我們知道,floa示數范圍約為- 3.4*10^38-------3.4*10^38, 這是因為尾數都為1時,即1.11..11約為2,因此浮點數的范圍就出來了.double的情況與float完全相似.

『捌』 能不能給我講講C語言中實數的二進制形式,是怎樣存儲的

1、float類型數字在計算機中用4個位元組(32位)存儲。

遵循IEEE-754格式標准:
一個浮點數由3部分組成:符號位s(1位)和、指數e(8位)、底數m(23位)

2、格式
SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM

S:符號位
E:指數,十進制指數加上127後的值得二進制數據
M:底數

3、符號位

指底數的符號,可正可負。

4、指數

佔用8bit的二進制數,可表示數值范圍為0-255。

但是指數可正可負,所以,IEEE規定,此處算出的次方必須減去127才是真正的指數。

所以,float類型的指數可從-126到128

5、底數

實際是佔用24bit的一個值,但是最高位始終為1,所以,最高位省去不存儲,在存儲中佔23bit
科學計數法。

再舉一例:
17.625在內存中的存儲

首先要把17.625換算成二進制:10001.101

在將10001.101右移,直到小數點前只剩1位:
1.0001101 * 2^4 因為右移動了四位

底數:因為小數點前必為1,所以IEEE規定只記錄小數點後的就好。所以,此處的底數為:0001101
指數:實際為4,必須加上127(轉出的時候,減去127),所以為131。也就是10000011
符號:整數,所以是0


綜上所述,17.625在內存中的存儲格式是:
01000001 10001101 00000000 00000000

『玖』 c語言中double型數據在內存中 佔多少個位元組來存儲

c語言中double(雙精度浮點型)是計算機使用的一種數據類型。double(雙精度浮點型)使用 64 位(8位元組) 來儲存一個浮點數。 它可以表示十進制的15或16位有效數字,其數值范圍為-1.79769313486232E308 到1.79769313486232E308。

(9)double內存存儲擴展閱讀:

double(雙精度浮點型)數值可轉換到其他類型的整數或浮點數,反之亦然。double(雙精度浮點型)常量的最後一個字元可加上「d」或「D」。其存儲格式與浮點型類似,最高位為符號位,次高11位為指數位,其次52位為尾數。

double(雙精度浮點型)同數值型比,它能提供更高的數值精度,採用固定存儲長度的浮點數形式,與數值型數據不同,它的小數點位置是由輸入的數據值來決定的,並且只能用於表中的欄位。

『拾』 C語言中DOUBLE型數據儲存結果

float與double類型的內存分布,精度和范圍
內存分布:
C/c++的浮點數據類型有float和double兩種。
float大小為4位元組,內存中的存儲方式如下:
符號位(1bit)指數(8bit)尾數(23bit)
double大小為8位元組,內存中的存儲方式如下:
符號位(1bit)指數(11bit)尾數(52bit)
符號位決定浮點數的正負,0正1負。指數和尾數均從浮點數的二進制科學計數形式中獲取。
如,十進制浮點數2.5的二進制形式為10.1,轉換為科學計數法形式為(1.01)*(10^1)。
由此可知指數為1,尾數(即科學計數法的小數部分)為01。
根據浮點數的存儲標准,指數用移碼表示。0的float類型移碼為127(0111
1111),0的double類型移碼為1023(011
1111
1111)。運算時,在0
的移碼基礎上加指數,得到的就是內存中指數的表示形式。尾數則直接填入,如果空間多餘則以0補齊,如果空間不夠則0舍1入。
所以float和
double類型分別表示的2.5如下(二進制):
符號位
指數
尾數
0
1000
0000
010
0000
0000
0000
0000
0000
0
100
0000
0000
0100
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
精度:
float和double的精度是由尾數的位數來決定的。
float:2^23
=
8388608,一共七位,這意味著最多能有7位有效數字,但絕對能保證的為6位,也即float的精度為6~7位有效數字;
double:2^52
=
4503599627370496,一共16位,同理,double的精度為15~16位。
范圍:
float類的指數是8位移碼,最大為127最小為-127,127用來作2的指數,為2^127,約等於
1.7014*10^38,
而我們知道,floa示數范圍約為-
3.4*10^38-------3.4*10^38,
這是因為尾數都為1時,即1.11..11約為2,因此浮點數的范圍就出來了.double的情況與float完全相似.

熱點內容
日本免費雲伺服器色 發布:2025-04-05 04:58:52 瀏覽:864
linuxcpp 發布:2025-04-05 04:53:38 瀏覽:747
安卓字體哪個最好 發布:2025-04-05 04:46:37 瀏覽:649
什麼是hdb3碼編解碼 發布:2025-04-05 04:40:20 瀏覽:504
編譯原理運算符 發布:2025-04-05 04:37:50 瀏覽:520
如何用安卓手機玩ipad的賬號 發布:2025-04-05 04:17:42 瀏覽:935
vivo手機怎麼在桌面建文件夾 發布:2025-04-05 04:15:56 瀏覽:961
在線ftp網頁版軟體 發布:2025-04-05 04:15:02 瀏覽:624
android手機gps 發布:2025-04-05 04:14:59 瀏覽:446
頁數演算法 發布:2025-04-05 03:19:01 瀏覽:318