當前位置:首頁 » 存儲配置 » double的存儲方式

double的存儲方式

發布時間: 2023-05-31 15:15:58

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

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

② float和double型分別怎麼存儲

C/C++的浮點數據類型有float和double兩種。

類型float大小為4位元組,即32位,內存中的存儲方式如下: 符號位(1 bit) 指數(8 bit) 尾數(23 bit)

類型double大小為8位元組,即64位,內存布局如下: 符號位(1 bit) 指數(11 bit) 尾數(52 bit)

符號位決定浮點數的正負,0正1負。

指數和尾數均從浮點數的二進制科學計數形式中獲取。

如,十進制浮點數2.5的二進制形式為10.1,轉換為科學計數法形式為(1.01)*(10^1),由此可知指數為1,尾數(即科學計數法的小數部分)為01。

根據浮點數的存儲標准(IEEE制定),float類型指數的起始數為127(二進制0111 1111),double類型指數的起始數為1023(二進制011 1111 1111),在此基礎上加指數,得到的就是內存中指數的表示形式。尾數則直接填入,如果空間多餘則以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

③ VB中的類型DOUBLE表示雙精度浮,點數存儲為幾個位元組

Double 數據類型

Double(雙精度浮點型)變數存儲為 IEEE 64 位(8 個位元組)浮點數值的形式,它的范圍在慧清配負數的時候是從 -1.79769313486232E308 到 -4.94065645841247E-324,而正數的正搏時候是從 4.94065645841247E-324 到 1.79769313486232E308。前指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

⑤ double占幾個位元組

double佔8個位元組。

double 類型的整數部分的最小表示範圍宏缺耐和 float 一樣,都是 -1.0E37 到 1.0E+37,但是它要求 double 類型精度15 到 16 位。double 通常是 64 位的。

輸出double float類型的控制符為%lf。變數定義時,可以簡寫為double。


相關單位

B與bit

數據存儲是以「位元組」(Byte)為單位,數據傳輸大多是以「位」(bit,又名「比特」)為單位,一個位就代表一個0或1(即二進制),每8個位(bit,簡寫為b)組成一個位元組(Byte,簡寫為B),是最小一級的信息單位。

字(Word)

在計算機中,一串數碼作為一個整體來處理或運蔽春算的,稱為一個計算機字,簡稱字。字通常分為若干個位元組(每個位元組一般是8位)。在存儲器中,通常每個單元存儲一個字。因此每個字都是可以定址的。字的長度用位數來表示。

字長

計算機的每個字所包扮唯含的位數稱為字長,計算的字長是指它一次可處理的二進制數字的數目。一般地,大型計算機的字長為32-64位,小型計算機為12-32位,而微型計算機為4-16位。字長是衡量計算機性能的一個重要因素。

⑥ double是什麼數據類型

double是計算機語言的一個類型,即雙精度浮點型。

此數據類型與單精度數據類型(float)相似,但精確度比float高,編譯時所佔的內存空間依不同的編譯器而有所不同,通常情況,單精度浮點數佔4位元組(32位)內存空間,其數值范圍為-3.4E38~3.4E+38。

雙精度型佔8 個位元組(64位)內存空間,其數值范圍為-1.7E308~1.7E+308。聲明double 類型的變數:double puotient。初始化double 類型的變數:puotient = 5.621456873;double puotinet = 5.62。

浮點型數據

1、float型

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

2、double型

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

3、long double型

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

⑦ float和double存儲單位上的差別是什麼

1,單精度,也就是 float ,在 32 位機器上用 4 個位元組來存儲的;而雙精度double是用 8 個位元組來存儲的,這是他們最本質的區別。

2,由於存儲位不同,他們能表示的數值的范圍就不同,也就是能准確表示的數的位數就不同。

3,單精度小數點後面共能精確到7位小數。雙精度可精確到15位小數。

(7)double的存儲方式擴展閱讀:

單精度浮點數用4位元組存儲,雙精度浮點數用8位元組存儲,分為三個部分:符號位、階和尾數。階即指數,尾數即有效小數位數。單精度格式階佔8位,尾數佔24位,符號位1位,雙精度則為11為階,53位尾數和1位符號位。

細心的人會發現,單雙精度各部分所佔位元組數量比實際存儲格式多了一位,的確是這樣,事實是,尾數部分包括了一位隱藏位,允許只存儲23位就可以表示24位尾數,默認的1位是規格化浮點數的第一位,當規格化一個浮點數時,總是調整它使其值大於等於1而小於2,亦即個位總是為1。

階以移碼的形式存儲。對於單精度浮點數,偏移量為127(7FH),而雙精度的偏移量為1023(3FFH)。存儲浮點數的階碼之前,偏移量要先加到階碼上,浮點數有兩個例外。數0.0存儲為全零。無限大數的階碼存儲為全1,尾數部分全零。符號位指示正無窮或者負無窮。

⑧ 能不能給我講講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

熱點內容
python多線程map 發布:2025-02-07 01:04:37 瀏覽:461
python線程時間 發布:2025-02-07 01:04:26 瀏覽:793
精易編程 發布:2025-02-07 00:49:10 瀏覽:464
訪問桂綸鎂 發布:2025-02-07 00:49:00 瀏覽:938
安卓免費掃描哪個好 發布:2025-02-07 00:47:40 瀏覽:90
金蝶修改伺服器地址 發布:2025-02-07 00:41:08 瀏覽:867
安卓手機版的蒸汽平台在哪裡下載 發布:2025-02-07 00:29:04 瀏覽:454
php自學中心 發布:2025-02-07 00:28:50 瀏覽:270
手機卡在哪裡設置密碼 發布:2025-02-07 00:21:25 瀏覽:707
解壓哄睡音頻 發布:2025-02-07 00:19:56 瀏覽:159