記憶體位址和記憶體空間的理解

2021-09-22 18:22:33 字數 2161 閱讀 9584

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位十六進製制表示記憶體位址,另一種用8位十六進製制表示記憶體位址,那是根據不同的硬體環境來的。個人理解:有些cpu只能定址16位(16根位址線),所以用4位十六進製制表示位址就夠用了。有些cpu只能定址32位(32根位址線),所以用8位十六進製制。

另外記住, 210 = 1024

1g  = 1024 m

1m  =  1024 kb

1kb = 1024 bit

2.理解記憶體。

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

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

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

在第一行中,每一格表示一段記憶體,而格仔裡的內容是這段內容記下的資料;第二行中每一格內數字就是對應的記憶體的位址。

可能有人會啄磨:為什麼乙個「丁」字(「小」「明」兩字也一樣)占用兩個記憶體位址呢?這是因為漢字在乙個位址(位置)裡呆不下,必須放在連續的兩個位址空間內。那麼,什麼東西可以放在單獨的乙個記憶體位址裡呢?像英文的裡字母,比如』a』, 像阿拉伯數字:比如』1』,可以,而且就是放在乙個記憶體位址裡。假設有一字串「abc」,被記在記憶體裡,可示意為(這次我們假設從記憶體位址2000h處記起):

現在我們提幾個問題:

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

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

讓我們把字母』a』對應的圖也畫出來:

在上面的兩個圖中:

第一行分別是「丁」和「a」,它是給人看的。

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

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

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

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

『a』也一樣,它是由8位0、1組成的。佔1個記憶體位址。

參考:

記憶體位址和記憶體空間

在操作暫存器時,遇到概念上的理解問題。混淆了記憶體位址與記憶體空間 首先,讀懂指令 ldr r0,0x11000c40 0x11000c40是暫存器gpx2con的位址,將這個位址寫入r0暫存器的空間 ldr r1,r0 將r0空間的位址所指向的4位元組資料,讀入r1的記憶體空間,即r1儲存了0x1...

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

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

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

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