天天看點

計算機存儲單元和記憶體工作原理

計算機的存儲機關:

計算機系統資料隻用0和1這種表現形式,(這裡隻表示一個資料點,不是數字),一個0或者1占一個“位”,而系統中規定8個位為一個位元組。

電腦的各種存儲器的最小的存儲機關是比特,也就是位(bit,簡稱b),它表示一個二進制位。比位大的機關是位元組(byte,簡稱b),它等于8個二進制位。

因為在存儲器中含有大量的存儲單元,每個存儲單元可以存放8個二進制位,是以存儲器的容量是以位元組為基本機關的。

每個英文字母要占一個位元組,一個漢字要占兩個位元組。

其它常用的機關還有千位元組(kilobyte,簡稱k或者kb,1kb等于1024b)、兆位元組(megabyte,簡稱m或者mb,1mb等于1024kb)和吉位元組(gigabyte,簡稱g或者gb,1gb等于1024mb)。

說道位元組肯定要提到字元,那麼這兩者之間又是怎麼回事呢?

字元: 

人們使用的記号,抽象意義上的一個符号。如 '1', '中', 'a', '$', '¥', ……

位元組:

計算機中存儲資料的單元,一個8位的二進制數,是一個很具體的存儲空間。如 0x01, 0x45, 0xfa, ……

差別:通過編碼,具體把某一個字元編碼成了哪幾個位元組,我們隻需要知道“編碼”的概念就是把“字元”轉化成“位元組”。也就是說,字元是通過位元組來實作的。

記憶體:

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

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

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

記憶體位址:

計算機把所有的資訊都給數字化了,是以它知道自已把一個資料,一條指令記到了記憶體中的哪個(些)位置。

看下面的例子:

如果讓計算機在記憶體裡記住“丁小明”這個名字,可以示意為:

計算機存儲單元和記憶體工作原理

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

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

現在我們提幾個問題:

計算機記住”丁”字的記憶體位址是多少? 答案是:1000h。

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

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

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

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

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

關于第三行,你可以這樣了解,門牌号是一個家庭配置設定一個,每家每戶内還有客廳卧室,這些就沒有位址了。

可見:

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

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

總結:記憶體位址是記憶體當中存儲資料的一個辨別,并不是資料本身,通過記憶體位址可以找到記憶體當中存儲的資料。

特别說明:尊重作者的勞動成果,轉載請注明出處哦~~~