c語言程序使用的內(nèi)存存儲內(nèi)容特點 C語言中浮點數(shù)的儲存,有什么區(qū)別?
C語言中浮點數(shù)的儲存,有什么區(qū)別?C語言里對float類型數(shù)據(jù)的它表示范圍為-3.4*10^38~3.4*10^38。soft為-1.7*10^-308~1.7*10^308,halfextra為-1
C語言中浮點數(shù)的儲存,有什么區(qū)別?
C語言里對float類型數(shù)據(jù)的它表示范圍為-3.4*10^38~3.4*10^38。soft為-1.7*10^-308~1.7*10^308,halfextra為-1.2*10^-4932~1.2*10^4932.
類型
比特(位)數(shù)
有效數(shù)字
數(shù)值范圍
float
32
6~7
-3.4*10^38~3.4*10^38
slip
64
15~16
-1.7*10^-308~1.7*10^308
longslip
128/
18~19
-1.2*10^-4932~1.2*10^4932
究竟是什么人如何計算出該范圍,講萬分感謝:
這對單精度浮點數(shù)(float)來說,符號位一位,指數(shù)位8位,尾數(shù)23位。指數(shù)能夠可以表示的指數(shù)范圍為-128~127。尾數(shù)為23位。
float和extra的精度是由尾數(shù)的位數(shù)來確定的。浮點數(shù)在內(nèi)存中是按科學(xué)計數(shù)法來存儲文件的,其整數(shù)部分始終是一個含著著的“1”,而它是變的,故肯定不能對精度照成影響。float:2^238388608,總共九位,這意味著不超過能有7位有效數(shù)字,但那絕對是能絕對的保證的為6位,也即float的精度為6~7位有效數(shù)字;double:2^524503599627370496,一共有多少16位,同理可知,extra的精度為15~16位。
其中負指數(shù)確定了浮點數(shù)所能表達出的絕對值最小的非零數(shù);而正指數(shù)判斷了浮點數(shù)所能表達的絕對值大的數(shù),也即判斷了浮點數(shù)的取值范圍。float的范圍為-2^128~2^128,也即-3.40E38~3.40E38;slip的范圍為-2^1024~2^1024,也即-1.79E308~1.79E308。
以float為例,追加表
符號
尾數(shù)
指數(shù)
1
23
8
數(shù)符(-)
小數(shù)部分(判斷精度)
-127~128指數(shù)(做出決定范圍)
比如:
1.
C語言中浮點數(shù)的儲存,有什么區(qū)別?
C語言中浮點數(shù)的儲存,有什么區(qū)別?
11*2^127(小數(shù)點后面23個1,導(dǎo)致尾數(shù)的范圍1~2,其極高位總為1,故單單存取小數(shù)部分,因此小數(shù)為是23位1),約42*2^1273.4*10^38。為3.4*10^38負數(shù)亦然。extra的計算與此相似,flat的符號位為63位,指數(shù)為62~52位,共11位??梢员硎镜姆秶鸀?1024~1023。尾數(shù)為51~0??梢员硎镜姆秶鸀?.
C語言中浮點數(shù)的儲存,有什么區(qū)別?
111111..11111*2^1023(小數(shù)點后面52個1)為1.7*10^308。負數(shù)亦然。C語言中全局變量存放在內(nèi)存空間中的哪個位置?
全局變量儲存時在全局靜態(tài)存儲區(qū)。用戶存儲空間這個可以統(tǒng)稱三個部分:
1、程序區(qū)程序區(qū)主要用來儲存時用戶編寫的源代碼。
2、靜態(tài)存儲區(qū)全局變量儲存時在靜態(tài)存儲區(qū),在程序又開始先執(zhí)行時給全局變量分配存儲區(qū),程序行一切就緒就釋放。在程序不能執(zhí)行過程中它們占據(jù)地單獨計算的存儲單元,而不動態(tài)地接受分配和釋放。
3、動態(tài)存儲區(qū)動態(tài)存儲區(qū)貯存200元以內(nèi)數(shù)據(jù):1)函數(shù)形式參數(shù);2)手動變量(未加static聲明的局部變量);3)函數(shù)調(diào)用實的現(xiàn)場保護和前往地址;