64位操作系統與32位操作系統數據類型的字節數


一)64位系統和32位有什么區別? 
 
1、64bit CPU擁有更大的尋址能力,最大支持到128GB內存(理論上達到2^64,但實際上根本用不到那么大的內存),而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個字節
 
所以:在32位系統和64位系統下只有指針類型和長整型字節數有所差別,其余全部相同
32   int  *     :4個字節    long    :4個字節
64   int  *     :8個字節    long    :8個字節


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM