32位和64位機資料型別的大小

2021-10-02 07:34:54 字數 779 閱讀 6491

32位系統和64位有什麼區別?

通常的64位技術是相對32位而言的,這個位數指的是cpu gprs(general-purpose register通用暫存器)的資料寬度為64位,而32位的處理器的通用暫存器的資料寬度為32位,64位指令集就是執行64位資料的指令,也就是說一次可以執行64bit的資料。

也就是說:

64位cpu擁有更大的定址能力,最大支援到16gb記憶體,而32bit只支援4g記憶體;

64位cpu一次可提取64位資料,比32位提高了一倍,理論上效能會提公升1倍。但這是建立在64bit作業系統和64bit軟體的基礎之上。

綜上,雖然理論上來講,資料型別的位元組數應該是由cpu決定的,但實際上主要由編譯器決定,編譯器會根據系統平台自己改變資料型別的取值範圍。

常用資料型別對應位元組數

型別    32位編譯器    64位編譯器

char    1個位元組    1個位元組

char*    4個位元組(32位的定址空間是2^32, 即32個bit,也就是4個位元組    8個位元組(同理64位編譯器)

short int    2個位元組    2個位元組

int    4個位元組    4個位元組

unsigned int    4個位元組    4個位元組

float    4個位元組    4個位元組

double    8個位元組    8個位元組

long    4個位元組    8個位元組

long long    8個位元組    8個位元組

unsigned long    4個位元組    8個位元組

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

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

32位64位下資料型別

c語言中基本資料型別的長度 32位下 char 1個位元組 不變 指標變數 4個位元組 32位機的定址空間是4個位元組。同理64位編譯器 變化 short int 2個位元組 不變 int 4個位元組 不變 unsigned int 4個位元組 不變 float 4個位元組 不變 double 8個...

32位和64位下資料大小

32位下和64位下資料大小的不同 最近在linux下移植程式時遇到了乙個問題,將32位機下的程式移植到64位上,在用long型讀入檔案時發生了錯誤,讀出來的是0,後經測試原來是在32位機下和64機下某些資料型別表示的不一樣。測試程式如下 include int main 在windows下,是這樣的...