實數變數存儲
Ⅰ 實型變數實型變數的存儲單元、取值范圍及有效數字
在編程中,不同類型實型變數的存儲特性有所不同。單精度float型數據在VC6.0中佔用4個位元組,其取值范圍相當廣泛,從-E38到E38,精度大約為7位小數。雙精度double型佔用8個位元組,其范圍更寬,從-E308到E308,有效數字通常在15到16位之間。至於long double型,它具有更高的精度,佔用10個位元組,其取值范圍為-E4932到E4932,有效數字也相應更多。
值得注意的是,在VC6.0的運算過程中,單精度實型變數會被自動提升為雙精度處理,以保證計算的准確性。此外,實數在內存中是以指數形式存儲的,這種存儲方式使得處理大數值時更為高效,尤其是在涉及科學計數法時。
Ⅱ 能不能給我講講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語言中:什麼是變數的類型
變數的類型相當於給變數進行注冊。編譯時,系統根據變數的類型,在內存中分配合適大小的存儲空間。
比如,Turbo C2.0中,int型變數佔2個位元組的存儲空間,char型變數占個1位元組的存儲空間等。