32位系統和64位系統的說明

關於32位系統和64位系統說明

我們常說的32位系統和64位系統,是怎麼來的呢?
其實這跟cpu硬件是有關的:
32位的處理器,指的是cpu一次能處理的最大位數是32位,也就是如下:

1111 1111 1111 1111 1111 1111 1111 1111

32位處理器,計算機中的位數指的是CPU一次能處理的最大位數。32位計算機的CPU一次最多能處理32位數據,例如它的EAX寄存器就是32位的,當然32位計算機通常也可以處理16位和8位數據。

同時:在計算機中,“位(bit)”和"字節(Byte)"、KB、MB以及TB的關係是:
8位等於一字節,即8bit=1Byte,1KB=1024Byte(字節)=8*1024bit,1MB=1024KB,1GB=1024MB,1TB=1024GB 。32位處理器每次處理 4Byte(32bit),同理,64位處理器每次處理 8Byte(64bit) 。

在32位的系統中,cpu內部和外部數據總線最後發展爲32位,則最終最大尋址爲4GB。

在64位系統中,也是同樣的原理。而64位處理器一次就能處理64位,即8個字節的數據。如果我們將總長128位的指令分別按照16位、32位、64位爲單位進行編輯的話:舊的16位處理器,比如Intel 80286 CPU需要8個指令,32位的處理器需要4個指令,而64位處理器則只要兩個指令,顯然,在工作頻率相同的情況下,64位處理器的處理速度會比16位、32位的更快。

且除了運算能力之外,與32位處理器相比,64位處理器的優勢還體現在系統對內存的控制上。由於地址使用的是特殊的整數,而64位處理器的一個ALU(算術邏輯運算器)和寄存器可以處理更大的整數,也就是更大的地址。傳統32位處理器的尋址空間最大爲4GB,使得很多需要大容量內存的數據處理程序在這時都會顯得捉襟見肘,形成了運行效率的瓶頸。而64位的處理器在理論上則可以達到16777216個TB,1TB等於1024GB,1GB等於1024MB,所以64位的處理器能夠徹底解決32位計算系統所遇到的瓶頸現象,速度快人一等。

和C語言的關係

當我們編程按照32位系統編程debug時,則尋址是32位,也是就8個16進程的數字來構成地址:

#include<stdio.h>
int main()
{
	int a = 10;
	printf("%p \n", &a);
	return 0;

}

在32位系統的輸出結果 :

1>------ 已啓動生成:  項目: Project2, 配置: Debug Win32 ------
1>  test1.c
1>d:\code\c\project2\project2\test1.c(7): warning C4172: 返回局部變量或臨時變量的地址
1>  Project2.vcxproj -> D:\Code\C\Project2\Debug\Project2.exe
========== 生成:  成功 1 個,失敗 0 個,最新 0 個,跳過 0 個 ==========

cmd.exe輸出結果爲:
00EFFBFC
請按任意鍵繼續. . .

在64位系統的輸出結果爲:

[root@pcserver ~]# gcc 1.c
[root@pcserver ~]# ./a.out
0x7fff8d73c61c 
則此時爲1616進制數據,則爲64位。

此文部分內容引用:
百度百科
https://baike.baidu.com/item/32位處理器/9830812

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章