一)64位系統和32位有什麼區別?
1、64bit cpu擁有更大的定址能力,最大支援到16gb記憶體,而32bit只支援4g記憶體
2、64位cpu一次可提取64位資料,比32位提高了一倍,理論上效能會提公升1倍。但這是建立在64bit作業系統,64bit軟體的基礎上的。
什麼是64位處理器?
之所以叫做「64位處理器」,是因為電腦內部都是實行2進製運算,處理器(cpu)一次處理資料的能力也是2的倍數。8位處理器、16位處理器、32位處理器和64位處理器,其計數都是2的倍數。一次處理的資料越大,該電腦處理資訊的能力越來越大;因此64位處理在先天就比32位處理器具有快速的能力。那為什麼不用更高階的128位處理器呢?因為位數越高,處理器晶元的設計也就越複雜,目前的技術水平暫時無法製造這麼複雜的晶元。
64位處理器之失
※硬體———缺乏驅動程式,很多現有硬體無法使用
※軟體———作業系統不是問題,但是軟體出現不相容難題
64位處理器之得
※硬體———更快的執行速度,更大的記憶體管理
※軟體———最新的尖端軟體首先出現在64位平台
(二)資料型別對應位元組數
程式執行平台
不同的平台上對不同資料型別分配的位元組數是不同的。
個人對平台的理解是cpu+os+compiler,是因為:
1、64位機器也可以裝32位系統(x64裝xp);
2、32位機器上可以有16/32位的編譯器(xp上有tc是16位的,其他常見的是32位的);
3、即使是32位的編譯器也可以弄出64位的integer來(int64)。
以上這些是基於常見的wintel平台,加上我們可能很少機會接觸的其它平台(其它的cpu和os),所以個人認為所謂平台的概念是三者的組合。
雖然三者的長度可以不一樣,但顯然相互配合(即長度相等,32位的cpu+32位的os+32位的compiler)發揮的能量最大。
理論上來講 我覺得資料型別的位元組數應該是由cpu決定的,但是實際上主要由編譯器決定(佔多少位由編譯器在編譯期間說了算)。
常用資料型別對應位元組數
可用如sizeof(char),sizeof(char*)等得出
32位編譯器:
char :1個位元組
char*(即指標變數): 4個位元組(32位的定址空間是2^32, 即32個bit,也就是4個位元組。同理64位編譯器)
short int : 2個位元組
int: 4個位元組
unsigned int : 4個位元組
float: 4個位元組
double: 8個位元組
long: 4個位元組
long long: 8個位元組
unsigned long: 4個位元組
64位編譯器:
char :1個位元組
char*(即指標變數): 8個位元組
short int : 2個位元組
int: 4個位元組
unsigned int : 4個位元組
float: 4個位元組
double: 8個位元組
long: 8個位元組
long long: 8個位元組
unsigned long: 8個位元組
**:
64位系統和32位系統 各種資料型別位元組數
一 64位系統和32位有什麼區別?1 64bit cpu擁有更大的定址能力,最大支援到16gb記憶體,而32bit只支援4g記憶體 2 64位cpu一次可提取64位資料,比32位提高了一倍,理論上效能會提公升1倍。但這是建立在64bit作業系統,64bit軟體的基礎上的。什麼是64位處理器?之所以叫...
32位和64位程式設計的資料型別長度區別
c c 僅僅定義了這些基本資料型別之間的關係,並沒有定義嚴格定義它們的字長。在不同的平台上,根據編譯器不同的實現,它們的字長如下表所示 資料型別 lp64 ilp64 llp64 ilp32 lp32 char88 888short 1616 1616 16 int32 n a32 n an a n...
32位64位下資料型別
c語言中基本資料型別的長度 32位下 char 1個位元組 不變 指標變數 4個位元組 32位機的定址空間是4個位元組。同理64位編譯器 變化 short int 2個位元組 不變 int 4個位元組 不變 unsigned int 4個位元組 不變 float 4個位元組 不變 double 8個...