1. 程式人生 > >深入理解計算機系統 第二章 資訊的表示和處理

深入理解計算機系統 第二章 資訊的表示和處理

 

欣哥劃的重點:

第二章比較難,建議至少掌握下面幾個知識點: 1. 位元組順序 : 大端和小端 2. 執行 圖2-24, 圖2-25程式 show-bytes.c 觀察結果,看看有什麼問題 3. 理解布林運算,位運算 4. 理解無符號數和有符號數, 給一個數,能計算出補碼 5. 理解浮點數的表示法,給一個十進位制小數,能轉換成二進位制的浮點數表示

 

由於第二章知識點很多,上班又比較忙,所以按欣哥劃的重點來閱讀。

 

本週看了 3 個點:

1、位元組順序:大端和小端

2、理解布林運算,位運算

3、理解無符號數和有符號數,給一個數,能計算出補碼

 

下面按點寫筆記:

 

1、位元組順序:大端和小端

前提:

  對於跨越多位元組地址的物件,在幾乎所有的機器上,都會被儲存為連續的位元組序列,物件的地址為所使用的位元組中最小的地址

先說大端和小端的定義

  小端法:最低有效位元組在最前面的方式

  大端法:最高有效位元組在最前面的方式

舉例說明:

  對於數 0xA1FE,它在計算機中會被儲存為連續的兩個位元組,當 A1 被儲存在前時,即為大端表示法;當 FE 被儲存在前時,即為小端表示法

  在這個例子中,A1 為最高有效位元組,FE 為最低有效位元組

注:

  現在我們假設有一個 w 位的二進位制數,只要 w 大於 8,它就總能被表示為多個位元組(即,從右到左,8 位結合為 1 位元組,最後不夠 8 位的部分,在左邊用 0 補齊)

總結:

結合前提和定義,我們可以說,地址為最高有效位元組的多位元組物件使用的是大端法,反過來,地址為最低有效位元組的多位元組物件使用的是小端法

 

2、布林運算,位運算

主要要記住 4 個運算子的意義,對相應的規則整理如下

 

 

3、理解無符號數和有符號數,給一個數,能計算出補碼

無符號數:所有的位都表示數值

有符號數:第一位是符號位(0 為正,1 為負),其餘都表示數值

 

補碼計算例項:

負數 6 的原碼為 1000 0110

其反碼為 1111 1001

其補碼為 1111 1010

 

補充一下原碼、反碼和補碼的概念:

原碼

  就是符號位加上真值的絕對值, 即用第一位表示符號, 其餘位表示值

反碼:

  正數的反碼是其本身

  負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反

補碼:

  正數的補碼就是其本身 

  負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 最後+1. (即在反碼的基礎上+1)

 

 

希望在下週的閱讀中,能解決以下問題: 

原碼、反碼、補碼是隻針對有符號數嗎?無符號數有沒有這三種編碼方式?