計算機的存儲單位:
計算機系統數據只用0和1這種表現形式,(這裏只表示一個數據點,不是數字),一個0或者1佔一個「位」,而系統中規定8個位爲一個字節。編程
電腦的各類存儲器的最小的存儲單位是比特,也就是位(bit,簡稱b),它表示一個二進制位。比位大的單位是字節(byte,簡稱B),它等於8個二進制位。學習
由於在存儲器中含有大量的存儲單元,每一個存儲單元能夠存放8個二進制位,因此存儲器的容量是以字節爲基本單位的。編碼
每一個英文字母要佔一個字節,一個漢字要佔兩個字節。spa
其它經常使用的單位還有千字節(Kilobyte,簡稱K或者KB,1KB等於1024B)、兆字節(Megabyte,簡稱M或者MB,1MB等於1024KB)和吉字節(Gigabyte,簡稱G或者GB,1GB等於1024MB)。操作系統
說道字節確定要提到字符,那麼這二者之間又是怎麼回事呢?orm
字符:
人們使用的記號,抽象意義上的一個符號。如 '1', '中', 'a', '$', '¥', ……圖片
字節:
計算機中存儲數據的單元,一個8位的二進制數,是一個很具體的存儲空間。如 0x01, 0x45, 0xFA, ……內存
區別:經過編碼,具體把某一個字符編碼成了哪幾個字節,咱們只須要知道「編碼」的概念就是把「字符」轉化成「字節」。也就是說,字符是經過字節來實現的。字符串
內存:
程序和數據日常存儲在硬盤等存儲器上,無論你開機或關機了,它們都是存在的,不會丟失。硬盤能夠存儲的東西不少,但其傳輸數據的速度較慢。因此須要運行程序或打開數據時,這些數據必須從硬盤等存儲器上先傳到另外一種容量小但速度快得多的存儲器,以後才送入CPU進行執行處理。這中間的存儲器就是內存。it
不管何種存儲器,軟盤、硬盤、光盤或者內存,都有地址。由於它們要存儲數據,因此就必須按必定的單位的數據分配一個地址。有了地址,程序才能找到這些數據。這很好理解,想一想大家家爲何要有門牌號便可。
學習編程,必須對內存的地址有一個透徹的理解。咱們編程中的每一行代碼,代碼中用到的每一個數據,都須要在內存上有其映射地址。固然,咱們並不須要掌握內存是如何進行編址,那是計算機系中的另一門課:操做系統的事了。
內存地址:
計算機把全部的信息都給數字化了,因此它知道自已把一個數據,一條命令記到了內存中的哪一個(些)位置。
看下面的例子:
若是讓計算機在內存裏記住「丁小明」這個名字,能夠示意爲:
在第一行中,每一格表示一段內存,而格子裏的內容是這段內容記下的數據;第二行中每一格內數字就是對應的內存的地址。
可能有人會啄磨:爲何一個「丁」字(「小」「明」兩字也同樣)佔用兩個內存地址呢?這是由於漢字在一個地址(位置)裏呆不下,必須放在連續的兩個地址空間內。那麼,什麼東西能夠放在單獨的一個內存地址裏呢?像英文的裏字母,好比’A’, 像阿拉伯數字:好比’1’,能夠,並且就是放在一個內存地址裏。假設有一字符串「ABC」,被記在內存裏,可示意爲(此次咱們假設從內存地址2000H處記起):
如今咱們提幾個問題:
計算機記住」丁」字的內存地址是多少? 答案是:1000H。請見上圖
咱們一直在說,在計算機中,全部信息都被數字化爲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個內存地址。
總結:內存地址是內存當中存儲數據的一個標識,並非數據自己,經過內存地址能夠找到內存當中存儲的數據。