一、64位系統(tǒng)和32位有什么區(qū)別胁编?
- 64bit CPU擁有更大的尋址能力厢钧,最大支持到16GB內存,而32bit只支持4G內存
- 64位CPU一次可提取64位數(shù)據(jù)嬉橙,比32位提高了一倍早直,理論上性能會提升1倍。但這是建立在64bit操作系統(tǒng)市框,64bit軟件的基礎上的霞扬。
什么是64位處理器?
- 之所以叫做“64位處理器”,是因為電腦內部都是實行2進制運算喻圃,處理器(CPU)一次處理數(shù)據(jù)的能力也是2的倍數(shù)萤彩。8位處理器、16位處理器级及、32位處理器和64位處理器乒疏,其計數(shù)都是2的倍數(shù)额衙。一次處理的數(shù)據(jù)越大饮焦,該電腦處理信息的能力越大;因此64位處理在先天就比32位處理器具有快速的能力窍侧。那為什么不用更高級的128位處理器呢县踢?因為位數(shù)越高,處理器芯片的設計也就越復雜伟件,目前的技術水平暫時無法制造這么復雜的芯片硼啤。
二、數(shù)據(jù)類型對應字節(jié)數(shù)
程序運行平臺
- 不同的平臺上對不同數(shù)據(jù)類型分配的字節(jié)數(shù)是不同的斧账。個人對平臺的理解是CPU+OS+Compiler谴返,是因為:
1、64位機器也可以裝32位系統(tǒng)(x64裝XP)咧织;
2嗓袱、32位機器上可以有16/32位的編譯器(XP上有tc是16位的,其他常見的是32位的)习绢;
3渠抹、即使是32位的編譯器也可以弄出64位的integer來(int64)。
- 以上這些是基于常見的windows平臺闪萄,加上我們可能很少機會接觸的其它平臺(其它的CPU和OS)梧却,所以個人認為所謂平臺的概念是三者的組合。
- 雖然三者的長度可以不一樣败去,但顯然相互配合(即長度相等放航,32位的CPU+32位的OS+32位的Compiler)發(fā)揮的能量最大。
- 理論上來講 我覺得數(shù)據(jù)類型的字節(jié)數(shù)應該是由CPU決定的圆裕,但是實際上主要由編譯器決定(占多少位由編譯器在編譯期間說了算)广鳍。
常用數(shù)據(jù)類型對應字節(jié)數(shù)
基本整型有char,short,int,long這四種。加上無符號的這四種葫辐,那就是8種搜锰。
可用如sizeof(char),sizeof(char*)等得出。
在C和C++編程中耿战,數(shù)據(jù)類型的大小是在頭文件limits.h和climits中包含蛋叼。
-
32位編譯器:
char :1個字節(jié)(8位,一個ASCII碼字符長度就是8位,unicode編碼等16-32位)
char*(即指針變量): 4個字節(jié)(32位的尋址空間是2^32, 即32個bit狈涮,也就是4個字節(jié)狐胎。同理64位編譯器)
short : 2個字節(jié) (short其實是short int 的縮寫)
//(int最高可存4字節(jié)32位數(shù)據(jù),最低16位歌馍,也可存24位)握巢。
int: 4個字節(jié) ∷扇矗可表示 -2^16 ~ 2^16-1的有+ - 正負符號的整數(shù)
unsigned int : 4個字節(jié)暴浦。可表示 0 ~ 2^32-1的無符號整數(shù)
float: 4個字節(jié)
double: 8個字節(jié)
long: 4個字節(jié) (long其實是long int 的縮寫)
long long: 8個字節(jié)
unsigned long: 4個字節(jié) -
64位編譯器:
char :1個字節(jié)
char*(即指針變量): 8個字節(jié)
short int : 2個字節(jié)
int: 4個字節(jié)
unsigned int : 4個字節(jié)
float: 4個字節(jié)
double: 8個字節(jié)
long: 8個字節(jié)
long long: 8個字節(jié)
unsigned long: 8個字節(jié)
如何選擇變量的整數(shù)類型
- 通常晓锻,int 是計算機處理起來效率最高的長度歌焦,如果沒有其他必要的理由,那么就用int砚哆。
- 如果變量的值不可能為負值独撇,那么就用 unsigned 無符號整型,同樣的存儲單元躁锁,可以表示更大的數(shù)纷铣。
- 如果知道變量的值可能會超過16位,那么最好用long 战转,即使系統(tǒng)上int可表示32位搜立,也應該這樣做。因為匣吊,當程序移植到16位系統(tǒng)時儒拂,int只能表示16位,這時候程序中這個變量就會內存溢出色鸳,無法工作社痛。
- short比int小,但是通常還是用int較多命雀。只有當有大型整型數(shù)組時蒜哀,才有必要使用short來節(jié)省內存空間。雖然有的系統(tǒng)int和short大小一樣吏砂,但是當移植到int位數(shù)更大的系統(tǒng)時撵儿,用int定義的整型數(shù)組內存就翻倍了。內存能省則省狐血。