1. 程式人生 > >深入理解計算機系統(讀書筆記)

深入理解計算機系統(讀書筆記)

第二章

資訊的表示和處理

二進位制

計算機的資訊儲存和處理都是以二進位制為基礎的,通過一系列的0,1組合,我們能夠去表示有限的整數和實數。
首先了解三種重要的符號表示方法:

  1. 有符號表示:用於表示大於或等於0的整數
  2. 無符號表示:用於表示有正有負的整數
  3. 浮點數:以科學計數法為基礎的二進位制表示方法

資訊儲存

在計算機內部資料是按照字進行儲存的,字有著統一的虛擬地址空間地址,計算機按照指定地址對資料進行讀取和寫入操作。
字通常為8位,也就是說可以表示無符號的0x00-oxFF。而關於計算機能夠進行定址的空間大小通常由“字長”表示,我們常說的32位系統,意思是指字長為32位,也就是說其虛擬地址空間大小為
2^32-1

另外值得注意的一點是不同機器間可能存在著資訊儲存順序上的差別:這種差別被稱為大端法和小端法。
大端法:一個數據如果超過一個字的表示範圍,由二個字以上表示時,則其位元組儲存順序為最高有效位元組在前。
小端法:則是最低有效位元組在前。
直觀的例子是:一個int型變數,其十六進值為0x12345,地址範圍為0x100-0x103。則其在大端法計算機和小端法計算機中的儲存順序為:
這裡寫圖片描述
大小端得叫法來源於《格列佛遊記》裡面關於兩個派別關於吃雞蛋先打破那一端的爭論。
一般來說,程式設計師在編寫程式的時候,不必關心繫統式如何儲存資料的。但是有時候,大小端的問題會顯露出來,這時候就需要額外的注意,否則會帶來程式的錯誤。尤其是在網路通訊中,由於網路中存在著各式各樣的機器,很有可能發生小端儲存的機器將資料傳送給大端儲存的機器,或者反之,這時候就會產生錯誤,因此在網路程式設計中,都需要首先將自身的資訊按照網路標準進行轉化,然後在進行傳送。