32位與64位系統基本資料型別的位元組數

2021-08-15 13:32:04 字數 1767 閱讀 6934

32位與64位系統資料型別

不同的平台上對不同的資料型別分配的位元組數是不同的,一般的,資料型別的位元組數是由編輯器決定的(編譯期間決定資料型別長度)。

簡單來說,平台就是cpu+os+compiler,cpu的位是指一次性可處理的資料量是多少,1位元組=8位,32位處理器可以一次性處理4個位元組的資料量,依次類推。32位作業系統針對的32位的cpu設計。64位作業系統針對的64位的cpu設計。所以平台是三者的組合,它們的位元組長相同時,效率最高。

下面是32位系統與64位系統各資料型別對比:

資料型別

說明32位位元組數

64位位元組數

取值範圍

bool

布林型1

1true,false

char

字元型1

1-128~127

unsigned char

無符號字元型11

0~255

short

短整型2

2-32768~32767

unsigned short

無符號短整型22

0~65535

int整型44

-2147483648~2147483647

unsigned int

無符號整型44

0~4294967295

long

長整型48–

unsigned long

無符號長整型48

–long long

長整型8

8-2^64~2^64-1

float

單精度浮點數44

範圍-2^128~2^128

精度為6~7位有效數字

double

雙精度浮點數88

範圍-2^1024~2^1024

精度為15~16位

long double

擴充套件精度浮點數88

範圍-2^1024~2^1024

精度為15~16位*位址

48–除了*與long隨作業系統子長變化而變化外,其他的都固定不變(32位和64位相比)

float與double的範圍和精度

範圍 float和double的範圍是由指數的位數來決定的。 

float的指數字有8位,而double的指數字有11位,分布如下: 

float: 

1bit(符號位) 8bits(指數字) 23bits(尾數字) 

double: 

1bit(符號位) 11bits(指數字) 52bits(尾數字) 

於是,float的指數範圍為-127~+128,而double的指數範圍為-1023~+1024,並且指數字是按補碼的形式來劃分的。 

其中負指數決定了浮點數所能表達的絕對值最小的非零數;而正指數決定了浮點數所能表達的絕對值最大的數,也即決定了浮點數的取值範圍。 

float的範圍為-2^128 ~ +2^128,也即-3.40e+38 ~ +3.40e+38;double的範圍為-2^1024 ~ +2^1024,也即-1.79e+308 ~ +1.79e+308。

精度 float和double的精度是由尾數的位數來決定的。浮點數在記憶體中是按科學計數法來儲存的,其整數部分始終是乙個隱含著的「1」,由於它是不變的,故不能對精度造成影響。 

float:2^23 = 8388608,一共七位,這意味著最多能有7位有效數字,但絕對能保證的為6位,也即float的精度為6~7位有效數字; 

double:2^52 = 4503599627370496,一共16位,同理,double的精度為15~16位。

C 32位系統與64位系統基本資料型別

說明32位位元組數 64位位元組數 取值範圍 bool 布林型1 1true,false char 字元型1 1 128 127 unsigned char 無符號字元型11 0 255 short 短整型2 2 32768 32767 unsigned short 無符號短整型22 0 65535...

32位或64位基本資料型別大小

int型字長問題 c c 規定int字長和機器字長相同 作業系統字長和機器字長未必一致 編譯器根據作業系統字長來定義int字長 由上面三點可知,在一些沒有作業系統的嵌入式計算機系統上,int的長度與處理器字長一致 有操作 系統時,作業系統的字長與處理器的字長不一定一致,此時編譯器根據作業系統的字長來...

32位與64位系統基本資料型別的位元組數

32位與64位系統資料型別 不同的平台上對不同的資料型別分配的位元組數是不同的,一般的,資料型別的位元組數是由編輯器決定的 編譯期間決定資料型別長度 簡單來說,平台就是cpu os compiler,cpu的位是指一次性可處理的資料量是多少,1位元組 8位,32位處理器可以一次性處理4個位元組的資料...