計算機組成原理——第二章數據的級表示

計算機組成原理——第二章 數據的級表示

本章重點討論計算機內部數據的機器級表示方式。主要內容包括:進位記數制、二進制定點數的編碼表示、無符號整數和帶符號整數的表示、IEEE 754 浮點數表示標準、西文字符和漢字的編碼表示、十進制數的二進制編碼表示(即 BCD 碼)、C 語言中各種類型數據的表示和轉換、數據的寬度和存放順序以及幾種常用檢/糾錯碼的編碼表示與使用方法。

2.1 數制和編碼

2.1.1 信息的二進制編碼

在這裏插入圖片描述

表示一個數值數據要確定三個要素:進位記數制、定/浮點表示和編碼規則。任何給定的一個二進制 0/1 序列,在未確定它採用什麼進位記數制、定點還是浮點表示以及編碼表示方法之前,它所代表的數值數據的值是無法確定的。

在計算機系統內部,所有信息都是用二進制進行編碼的。也就是說計算機內部採用的是二進制表
示方式。這樣做的原因有以下幾點。
(1) 二進制只有兩種基本狀態,使用有兩個穩定狀態的物理器件就可以表示二進制數的每一位,而製造有兩個穩定狀態的物理器件要比製造有多個穩定狀態的物理器件容易得多。例如,用高、低兩個電位,或用脈衝的有無,或脈衝的正負極性等都可以很方便、很可靠地表示“0”和“1”。
(2) 二進制的編碼和運算規則都很簡單。可用開關電路實現,簡便易行。
(3) 兩個符號 1 和 0 正好與邏輯命題的兩個值“真”和“假”相對應,爲計算機中實現邏輯運算和程序中的邏輯判斷提供了便利的條件,特別是能通過邏輯門電路方便地實現算術運算

2.1.2 進位記數制

主要講的就是進制的轉化
在這裏我自己總結一下:

  1. 十進制轉化爲R進制
    (1)整數部分就是除R得餘法,然後從下到上爲高位到低位。
    1
    (2)小數部分就是乘R取整法,然後從上到下爲高位到低位。在這裏插入圖片描述

  2. R進制轉化爲十進制
    任何一個 R 進制數轉換成十進制數時,只要“按權展開”即可。在這裏插入圖片描述

  3. R進制之間的轉化
    通用先轉化爲十進制再轉化。
    特殊的就是二進制轉化爲八進制和十六進制。
    二進制數轉換成八進制數時,整數部分從低位向高位方向每 3 位用一個等值的八進制數來替換,最後不足 3 位時在高位補 0 湊滿 3 位;小數部分從高位向低位方向每 3 位用一個等值的八進制數來替換,最後不足 3 位時在低位補 0 湊滿 3 位。
    二進制數轉換成十六進制數時,整數部分從低位向高位方向每 4 位用一個等值的十六進制數來替換,最後不足 4 位時在高位補 0 湊滿 4 位;小數部分從高位向低位方向每 4 位用一個等值的十六進制數來替換,最後不足 4 位時在低位補 0 湊滿 4 位。

2.1.3 定點與浮點表示

  1. 定點表示
    定點表示法用來對定點小數和定點整數進行表示。
  2. 浮點表示
    對於任意一個二進制數 X,可以表示成如下形式:
    X=(1)s(-1)^s×M×RER^E
    S 取值爲 0 或 1,用來決定數 X 的符號;M 是一個二進制定點小數,稱爲數 X 的尾數(mantissa); E 是一個二進制定點整數,稱爲數 X 的階或指數(exponent);R 是基數(radix、base),可以取值爲 2、 4、16 等。在基數 R 一定的情況下,尾數 M 的位數反映數 X 的有效位數,它決定了數的表示精度,有效位數越多,表示精度就越高;指數 E 的位數決定數 X 的表示範圍,其值確定了小數點的位置。

定點數的編碼表示

一般規定 0 表示正號,1 表示負號。
主要有以下 4 種定點數編碼表示方法:原碼、補碼、反碼和移碼。
通常將數值數據在計算機內部編碼表示的數稱爲機器數,機器數一定是一個 0/1 序列,通常縮寫成十六進制形式。
而機器數真正的值(即現實世界中帶有正負號的數)稱爲機器數的真值。
例如,-10(-1010B)用 8 位補碼錶示爲 11110110,說明機器數 11110110B(F6H 或 0xF6)的真值是
-10,或者說,-10 的機器數是 11110110B(F6H 或 0xF6)。
假設機器數 X 的真值 XT 爲:
XT = ±Xn–1´Xn–2´…X1´X0´ (當 X 爲定點整數時)
XT = ±0 . Xn–1´Xn–2´…X1´X0´ (當 X 爲定點小數時)
對 XT 用 n+1 位二進制數編碼後,機器數 X 表示爲:
X = Xn Xn-1 Xn-2 … X1 X0
機器數 X 的位數爲 n+1,其中,第一位 Xn 是數的符號位,後面 n 位 Xn-1 …X1 X0 是數值部分。

  1. 原碼錶示法
    原碼錶示法中,正數和負數的編碼表示僅符號位不同,數值部分完全相同。
    原碼 0 有兩種表示形式:
        [+0]原=0 00…0
        [–0]原=1 00…0
    現代計算機中不用原碼來表示整數,只用定點原碼小數來表示浮點數的尾數部分。
    如-10的8位原碼爲10001010B, 10的爲00001010B

  2. 補碼錶示法
    計算機的存儲、運算、傳送部件的位數有限,設其位數爲n時,當倆個n位的數進行運算時,結果可能會超出n位,那麼就只能保留低n位,高n位就丟失了。這個時候可能會發生倆種情況:
    (1)剩下的n位不能表示正確的運算結果,那麼此時稱爲發生了**“溢出“**
    (2)若何以表示正確的結果,就是高位的丟失不影響正確結果,此時就相當於將一個多於n位的二進制數除以2n2^n得到餘數,就是對2n2^n取餘,即**“模運算”**
    補碼錶示方法:“正數的補碼是它本身;負數的補碼等於模與該負數絕對值之差。”因此,數XT的補碼可用如下公式表示。
    (1)當 XT 爲正數時,[XT]補= XT = M + XT(mod M)。
    (2)當 XT 爲負數時,[XT]補= M – |XT| = M + XT(mod M)
    這裏有一個m的意思我理解是,原來的數轉化爲二進制以後位數可能大於n位,那麼超出n位的被模掉了,捨去的部分就是M。
    對於具有一位符號位和 n-1 位數值位的 n 位二進制整數的補碼來說,其補碼定義如下:
    [XT]補= 2n + XT(mod 2n)(–2n-1≤XT<2n-1)
    簡單點來說就是,負數不看符號位的原碼的反碼加一,然後再加上符號位。“各位求反,末位加 1”

  3. 反碼錶示法
    負數的反碼就是補碼末尾減一得到,也可以是負數的原碼不包括符號位各位求反得到,結果一樣。

  4. 移碼
    n位移碼就是將補碼加上2n12^{n-1},得到一個無符號位的數,就是相當於將這個數加上了2n12^{n-1},(我在說p)

2.2 整數的表示

2.2.1 無符號整數的表示

一般在全部都是正數運算且不歸出現負值結果的場合下,例如地址運算,表示指針。一般將無符號整數說成無符號數。

2.2.2 帶符號整數的表示

必須用一個二進制位來表示符號,前面的(原碼、補碼、反碼以及移碼)都可以表示帶符號整數。但是補碼有其突出的優點。
(1)與原碼和反碼相比,數 0 的補碼錶示形式唯一。 (2)與原碼和移碼相比,補碼運算系統是一種模運算系統,因而可用加法實現減法運算,且符號位可以和數值位一起參加運算。 (3)與原碼和反碼相比,它比原碼和反碼多表示一個最小負數。 (4)與反碼相比,不需要通過循環進位來調整結果。

2.2.3 C語言中的整數類型

C語言中對應的整數類型有:無符號unsigned short、unsigned int(unsigned)、unsigned long等。有符號:short、int、long等類型。

2.3實數的表示

2.3.1浮點數的表示格式

對於一個實數x可以表示爲:X=(1)s(-1)^s×M×RER^E
S 取值爲 0 或 1,用來決定數 X 的符號;M 是一個二進制定點小數,稱爲數 X 的尾數(mantissa); E 是一個二進制定點整數,稱爲數 X 的階或指數(exponent);R 是基數(radix、base),可以取值爲 2、 4、16 等。在基數 R 一定的情況下,尾數 M 的位數反映數 X 的有效位數,它決定了數的表示精度,有效位數越多,表示精度就越高;指數 E 的位數決定數 X 的表示範圍,其值確定了小數點的位置。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

2.3.3 IEEE 754浮點數標準

在這裏插入圖片描述
32 位單精度格式中包含 1 位符號 s、8 位階碼 e 和 23 位尾數 f;64 位雙精度格式包含 1 位符號 s、
11 位階碼 e 和 52 位尾數 f。其基數隱含爲 2;尾數用原碼錶示,第一位總爲 1,因而可在尾數中缺省
第一位的 1,稱爲隱藏位,使得單精度格式的 23 位尾數實際上表示了 24 位有效數字,雙精度格式的
52 位尾數實際上表示了 53 位有效數字。IEEE 754 規定隱藏位“1”的位置在小數點之前。
IEEE 754 標準格式中,指數用移碼錶示,偏置常數並不是通常 n 位移碼所用的 2n12^{n-1},而是(2n12^{n-1}–1),因此,單精度和雙精度浮點數的偏置常數分別爲 127 和 1023。IEEE 754 的這種“尾數帶一個隱藏位,偏置常數用(2n12^{n-1}–1)”的做法,不僅沒有改變傳統做法的計算結果,而且帶來以下兩個好處:
① 尾數可表示的位數多一位,因而使浮點數的精度更高。
② 指數的可表示範圍更大,因而使浮點數範圍更大

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章