32位與64位區別

2022-03-10 04:57:47 字數 1422 閱讀 6292

機器為什麼要分為32位和64位?作業系統為什麼分為32位和64位?程式設計上32位和64位有什麼差異?

一、機器與作業系統32位,64位。

32位和64位指的是機器字長:cpu同時處理的資料的最大長度。一台電腦機器是由cpu,記憶體,io裝置,匯流排組成,電腦機器是64位指各部件都支援64位。實際當中cpu,記憶體條,io裝置,匯流排都安裝在電腦主機板上,所以「電腦」為64位機指以上裝置都支援64位。

從硬體上說,64位機器的總體處理速度約為32位機器的2倍。作業系統依賴機器但又不完全依賴它。軟體相容性上,32位作業系統能輕易的做到分別執行在32位機器和64位機器上,而且執行的很流暢,只須做到定址上利用前面的32位。但當64位作業系統執行在32位作業系統上時卻無法做到執行的很流暢甚至出現卡機,宕機現象。此時由於64位作業系統(軟體)不支援32位定址造成記憶體溢位造成系統宕機,或64位作業系統轉為32操作時的相容性處理過於繁瑣影響了系統執行速度。

檢測**:

sizeof(void*)

32位:sizeof(void*) == 4 

64位:sizeof(void*) == 8 

二、程式語言上32位和64位差異。

程式語言上的差異主要體現在基本型別的位長上。c/c++等語言僅僅定義了這些基本資料型別之間的關係,並沒有嚴格定義它們的字長。不同作業系統平台上,根據編譯器不同的實現,它們的字長如下表所示:

資料型別

lp64

ilp64

llp64

ilp32

lp32

char

short

_int32

n/an/a

n/an/a

intlong

long long

n/an/a

n/an/a

pointer

在這張表中,lp64,ilp64,llp64是64位平台上的字長模型,ilp32和lp32是32位平台上的字長模型。lp64意思是long和pointer是64位,ilp64指int,long,pointer是64位,llp指long long和pointer是32-bit的。ilp32指int,long和pointer是32位的,lp32指long和pointer是32位的。32位windows採用的是lp32資料模型,64位windows採用的是llp64資料模型。windows上的32位程式設計和64位程式設計最大的不同(也就是ip32和llp64的不同),就在於指標的長度不同??由32位變成了64位。win32 api在很多情況下,都需要將整數轉換成指標或者相反。在 32 位的硬體上不會有問題,其中指標的大小和整數的大小是相同的,但在 64 位的硬體上卻完全不一樣。為此微軟搞了個所謂的「多型型別」:對於特定的精度,可以使用固定精度的資料型別。不管處理器的詞大小如何,它們的大小都是一致的。此外,當需要資料型別的精度隨著處理器詞大小變化時,可以使用指標精度資料型別。

三、參考。

1.

32位系統和64位區別

第一,設計初衷不同。64位作業系統的設計初衷是 滿足機械設計和分析 三維動畫 32位作業系統是為普通使用者設計的。第二,要求配置不同。64位作業系統只能安裝在64位電腦上 cpu必須是64位的 同時需要安裝64位常用軟體以發揮64位 x64 的最佳效能。32位作業系統則可以安裝在32位 32位cpu...

Windows 32位64位區別,檢視方法

術語 32 位 和 64 位 是指計算機的處理器 也稱為 cpu 處理資訊的方式。64 位版本的 windows 可處理大量的隨機訪問記憶體 ram 其效率遠遠高於 32 位的系統。檢視我的計算機執行的是32位還是64位的windows?1.對於win 7 單擊 開始 按鈕,右鍵單擊 計算機 單擊屬...

8位微控制器 16位 32位區別

8位微控制器 16位 32位區別?指cpu處理的資料的寬度,參與運算的暫存器的資料長度.如果匯流排寬度與cpu一次處理的資料寬度相同,則這個寬度就是所說的微控制器位數。如果匯流排寬度與cpu一次處理的資料寬度不同 1 匯流排寬度小於cpu一次處理的資料寬度,則以cpu的資料寬度定義微控制器的位數,但...