第二章 資訊的表示和處理
2.1 資訊儲存
最小的可定址記憶體單位,是位元組,而不是第一章提到的位。虛擬記憶體被視為一個非常大的位元組陣列,記憶體的每個位元組都有一個唯一的數字來標識,稱它為地址,所有可能地址的集合則稱為虛擬地址空間。
2.1.1 十六進位制表示法
十六進位制轉二進位制:
二進位制轉十六進位制:(最左邊一組少於4位,補0)
十進位制轉十六進位制:
十六進位制轉十進位制:
2.1.2 字資料大小
每臺計算機都有一個字長,指明指標資料的標稱大小。字長還會決定一個極為重要的系統引數——虛擬地址空間。比如現在有一個 32 位機,每一位可以取值 1 或 總共 32 位,能組合的出局就有 232
2.1.3 定址和位元組順序
小端法:最低有效位元組在前面
大端法:最高有效位元組在前面
2.1.4 表示字串
C語言中字串被編碼為一個以null(其值為0)字元結尾的字元陣列。
2.1.5 表示程式碼
當程式程式碼在機器上編譯時,會生成一些位元組來表示機器程式碼。
2.1.6 布林代數簡介
2.1.7 C語言中的位級運算
確定一個位級表示式的結果最好的方法,就是將十六進位制的引數擴充套件成二進位制並執行二進位制運算,然後再轉回十六進位制。
2.1.8 C語言中的邏輯運算
邏輯運算返回的時0或1,它們表示true或者false。如 0x69&&0x55,結果為0x01,即true。
2.1.9 C語言中的移位運算
左移:如01100011,丟棄前4位0110,後4位0011左移4位,然後右端補4個0,得到00110000。
邏輯右移:丟棄後4位0011,前4位0110右移4位,然後左端補4個0,得到00000110。
算術右移:丟棄後4位0011,前4位0110右移4位,然後左端補4個0(因為最高位為0,故補0),得到00000110。
Java中,x>>k是算術右移。x>>>k是邏輯右移。