1. 程式人生 > >第二章 資訊的表示和處理

第二章 資訊的表示和處理



2.1 資訊儲存

  最小的可定址記憶體單位,是位元組,而不是第一章提到的位。虛擬記憶體被視為一個非常大的位元組陣列,記憶體的每個位元組都有一個唯一的數字來標識,稱它為地址,所有可能地址的集合則稱為虛擬地址空間。

2.1.1 十六進位制表示法

十六進位制轉二進位制:

二進位制轉十六進位制:(最左邊一組少於4位,補0)

十進位制轉十六進位制:

十六進位制轉十進位制:

 

2.1.2 字資料大小

 每臺計算機都有一個字長,指明指標資料的標稱大小。字長還會決定一個極為重要的系統引數——虛擬地址空間。比如現在有一個 32 位機,每一位可以取值 1 或 總共 32 位,能組合的出局就有 232

 個,所以它能訪問 232 個地址。32位字長限制虛擬地址空間為4千兆位元組,寫作4GB。因此你如果給 32 位機裝上 8G 的記憶體條,是起不了多大作用的。

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是邏輯右移。