型別取值範圍

2021-09-12 08:52:51 字數 1207 閱讀 1237

ieee754浮點數的表示方法。c語言裡對float型別資料的表示範圍為-3.4*10^38~+3.4*10^38。double為-1.7*10^-308~1.7*10^308,long double為-1.2*10^-4932~1.2*10^4932.

型別位元(位)數

有效數字

數值範圍

float

6~7-3.4*10^38~+3.4*10^38

double

15~16

-1.7*10^-308~1.7*10^308

long double

128/

18~19

-1.2*10^-4932~1.2*10^4932

究竟如何計算該範圍,分析如下:

對於單精度浮點數(float)來說,符號位一位,指數字8位,尾數23位。指數能夠表示的指數範圍為-128~127。尾數為23位。

float和double的精度是由尾數的位數來決定的。浮點數在記憶體中是按科學計數法來儲存的,其整數部分始終是乙個隱含著的「1」,由於它是不變的,故不能對精度造成影響。float:2^23 = 8388608,一共七位,這意味著最多能有7位有效數字,但絕對能保證的為6位,也即float的精度為6~7位有效數字;double:2^52 = 4503599627370496,一共16位,同理,double的精度為15~16位。

其中負指數決定了浮點數所能表達的絕對值最小的非零數;而正指數決定了浮點數所能表達的絕對值最大的數,也即決定了浮點數的取值範圍。float的範圍為-2^128 ~ +2^128,也即-3.40e+38 ~ +3.40e+38;double的範圍為-2^1024 ~ +2^1024,也即-1.79e+308 ~+1.79e+308。

以float為例,如下表

符號尾數

指數數符(+-)

小數部分(決定精度)

-127~128 指數(決定範圍)

例如:+1.1111111111111111111111*2^127(小數點後面23個1,由於尾數的範圍1~2,其最高位總為1,故只需訪問小數部分,所以小數為是23位1),約等於2*2^127=3.4*10^38。為3.4*10^38負數亦然。

double的計算與此類似,double的符號位為63位,指數為62~52位,共11位。表示的範圍為-1024~1023。尾數為51~0。表示的範圍為+1.1111111111111111..11111*2^1023(小數點後面52個1)為1.7*10^308。負數亦然。

char(int )型別取值範圍

先拋問題,為什麼char的取值範圍是 128 127或0 255呢?再做解答 概念悉知 char型別佔乙個位元組,乙個位元組8個位元位。計算機中儲存數字儲存的是補碼,正數的原返補相同 1.當char是無符號的時 8個位元位分布為 0000 0000 為最小值0,而當8個位元位分布為 1111 111...

數值型別 取值範圍

32位cpu 型別說明符 位元組數值範圍 字元型char 2基本整型 int 4短整型 short int 2長整型 long int 4無符號型 unsigned 單精度實型 float 4雙精度實型 double 8位元組 unsigned char 1int 0xfffffff 32位 其中乙...

char 型別的取值範圍

1,包含了定義char int short long型別取值的最大值和最小值用常量表示 例如schar min 128 所以直接列印即可。2,如果要自己計算的話,則需要用到按位運算子 對於 char unsigned char 0 1 解釋 a unsigned char 0用二進位制表示為 111...