1. 程式人生 > >吐血整理!這篇帶你徹底理解主存中儲存單元地址的分配

吐血整理!這篇帶你徹底理解主存中儲存單元地址的分配

在閱讀本文之前,建議沒有基礎的讀者先閱讀下主存的基本組成結構: [五分鐘理解主儲存器的基本組成結構](https://blog.csdn.net/weixin_41695995/article/details/105009429) ## 儲存單元的字地址: 我們來看張圖: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200323210342780.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTY5NTk5NQ==,size_16,color_FFFFFF,t_70) 在上面的圖中,每一個小矩形代表一個儲存單元,大矩形表示主存中的儲存體。 通常都是以8位二進位制為一個儲存單元,也就是一個位元組。然後在我們的計算機中,不管是筆記本還是桌上型電腦,總會聽到CPU一次處理資料的能力是32位還是64位,其實,這個32位或者64位就是用來表示==字長==。字長用來表示==字==的長度。而字就是由位元組構成。 在上圖中,一個儲存單元為1個位元組,這4個位元組又構成一個字,每個字有==字地址==,在上圖中表示出來了。關於字地址的表示方式,也有兩種,這兩種表示方法的區別,我後面也會用一篇文章來解釋清楚。 那麼,上圖的字長為多少呢? 我們來分析下,4個位元組構成一個字,一個位元組等於8個位元,所以總共就是32位了。現在我們的計算機,都是64位了,很少有32位的計算機出現了。 ## 舉例: 在學習到主儲存體的章節時,這三道題我們經常會看到,經常會有小夥伴很迷惑,不知道怎麼分析,我們來看下下面三道題: > 1.設地址線為24根,按==位元組==定址,有多少儲存字? 2.如果儲存容量不變,若字長為16位,按==字==定址有多少儲存字? 3.如果儲存容量還不變,若字長為32,按==字==定址有多少儲存字? ##### 我們先分析下第一個問題。 這裡假如地址線有24根,由於地址也是用2進製表示的,那麼每根地址線就有0或者1兩位,地址可以表示為從00000..00000(24位)—11111...11111(24位)。一共就有2^24^位,也就是2^24^個地址。轉化之後就是16MB的地址。這些地址表示儲存單元的位置,所以儲存單元的個數也就是16MB。 那麼,16MB怎麼計算的呢? > 2^24^Byte(位元組)=16777216Byte > 16777216Byte/1024=16384KByte > 16384KByte/1024 = 16MByte 而且,1Byte=8Bit,那麼16MByte = 128Mbit。 第一個問題的意思就是,一個字等於8位元,也就是一個位元組。一個儲存單元可以存放一個8位二進位制數,這個二進位制數就是一個儲存字。其實,就是問有多少個儲存單元。經過計算,就是16MB個。 ##### 我們先分析下第二個問題。 在上面第一個例子中,一個儲存單元中有8位,那麼16MB個儲存單元中,可以存放16MB×8位。就是儲存單元的容量,簡稱==儲存容量==。 那麼,第二個問題中,儲存容量不變,就是一樣有==16MB×8的空間==。==字長為16位==,我們按==字==定址,有多少個==儲存字==? 如果是按字定址,我們知道字長16位,那麼總容量除以字長就是儲存字的個數: > (16MB*8)/ 16 = 8M 那麼第三個問題也是一樣的,只是把字長換成了32 > (16MB*8)/ 32 = 4M ## 如果覺得我寫的不錯的話,幫個忙唄 ##### 1.關注我的知乎賬號小叢,上面有我的文章同步,同時需要詢問學習計算機經驗的話,也歡迎私聊。 ##### 2.點贊,關注我,這是對我最大的鼓勵了,有了你們的鼓勵,我會寫出更多的優質