1. 程式人生 > >關於記憶體地址和記憶體空間的理解。

關於記憶體地址和記憶體空間的理解。

VIPler

關於記憶體地址和記憶體空間的理解。

1.記憶體地址用4位16進位制和8位16進製表示的區別。例如經常可以看到某些書籍上寫的記憶體地址0x0001,在另外一些書籍上寫的記憶體地址又變成了0x00000001。都是表示的編號為1的記憶體地址,為什麼一個是4位16進製表示,另外一個又是用8位16進製表示呢?

首先,必須要知道記憶體地址只是一個編號,代表一個記憶體空間。那麼這個空間是多大呢?原來在計算機中儲存器的容量是以位元組為基本單位的。也就是說一個記憶體地址代表一個位元組(8bit)的儲存空間。

例如經常說32位的作業系統最多支援4GB的記憶體空間,也就是說CPU只能定址2的32次方(4GB),注意這裡的4GB是以Byte為單位的,不是bit。也就是說有4G=4*1024M(Byte)=4*1024*1024Kb(Byte)=4*1024*1024*1024bit(Byte),即2的32次方個8bit單位。

所以說用4位16進製表示的記憶體地址和用8位16進製表示的記憶體地址,其實都是代表一個8bit的儲存空間而已:

image

image

至於說為什麼會出現一種是用4位十六進位制表示記憶體地址,另一種用8位十六進位制表示記憶體地址,那是根據不同的硬體環境來的。個人理解:有些CPU只能定址16位(16根地址線),所以用4位十六進位制表示地址就夠用了。有些CPU只能定址32位(32根地址線),所以用8位十六進位制。

另外記住, 210 = 1024

             1G  = 1024 M

             1M  =  1024 Kb

             1Kb = 1024 bit

2.理解記憶體。

程式和資料平常儲存在硬碟等儲存器上,不管你開機或關機了,它們都是存在的,不會丟失。硬碟可以儲存的東西很多,但其傳輸資料的速度較慢。所以需要執行程式或開啟資料時,這些資料必須從硬碟等儲存器上先傳到另一種容量小但速度快得多的儲存器,之後才送入CPU進行執行處理。這中間的儲存器就是記憶體。

無論何種儲存器,軟盤、硬碟、光碟或者記憶體,都有地址。因為它們要儲存資料,所以就必須按一定的單位的資料分配一個地址。有了地址,程式才能找到這些資料。這很好理解,想想你們家為什麼要有門牌號即可。

學習程式設計,必須對記憶體的地址有一個透徹的理解。我們程式設計中的每一行程式碼,程式碼中用到的每個資料,都需要在記憶體上有其對映地址。當然,我們並不需要掌握記憶體是如何進行編址,那是計算機系中的另外一門課:作業系統的事了。

記憶體地址:
計算機把所有的資訊都給數字化了,所以它知道自已把一個數據,一條命令記到了記憶體中的哪個(些)位置。
看下面的例子:
如果讓計算機在記憶體裡記住“丁小明”這個名字,可以示意為:

image

在第一行中,每一格表示一段記憶體,而格子裡的內容是這段內容記下的資料;第二行中每一格內數字就是對應的記憶體的地址。
可能有人會啄磨:為什麼一個“丁”字(“小”“明”兩字也一樣)佔用兩個記憶體地址呢?這是因為漢字在一個地址(位置)裡呆不下,必須放在連續的兩個地址空間內。那麼,什麼東西可以放在單獨的一個記憶體地址裡呢?像英文的裡字母,比如’A’, 像阿拉伯數字:比如’1’,可以,而且就是放在一個記憶體地址裡。假設有一字串“ABC”,被記在記憶體裡,可示意為(這次我們假設從記憶體地址2000H處記起):

image

現在我們提幾個問題:

計算機記住”丁”字的記憶體地址是多少? 答案是:1000H。請見上圖

我們一直在說,在計算機中,所有資訊都被數字化為2進位制的0、1,所以,“丁小明”這個名字被也應該是一串:0001 0010 0111 0101……,可是在中圖所畫出的,計算機記憶體裡記的,仍是“丁小明”三個字啊。

下面是解釋,我們只舉一個字”丁”講解。我們假設在那一串裡的 0001 0010 0111 0101 對應的是 “丁” 字,那麼有:

image

讓我們把字母’A’對應的圖也畫出來:

image

在上面的兩個圖中:

第一行分別是“丁”和“A”,它是給人看的。

第二行則是一串的的0和1,這才是計算機記憶體中實際儲存的資料。

第三行是記憶體的地址。並不是每個0和1所佔的位置都被編上地址。而是每8個才擁有一個地址。

關於第三行,你可以這樣理解,門牌號是一個家庭分配一個,每家每戶內還有客廳臥室,這些就沒有地址了。

可見:

‘丁’的確是由一串0、1組成的。更確切地,從圖上可以看出‘丁’是由16位0和1組成。這16數都存放在2個記憶體地址裡。

‘A’也一樣,它是由8位0、1組成的。佔1個記憶體地址。

總結:記憶體地址是記憶體當中儲存資料的一個標識,並不是資料本身,通過記憶體地址可以找到記憶體當中儲存的資料。

分類: 計算機系統結構原理