機器數及特點
<1> 爲什麼要研究機器內的數據表示
- 目的:組織數據,方便計算機硬件直接使用
- 要考慮的因素
- 支持的數據類型
- 能表示的數據範圍
- 能表示的數據精度
- 存儲和處理的代價
- 是否有利於軟件的移植
- …
<2> 機器內的數據表示
- 真值:符號用 “+”、 “-” 表示的數據表示方法
- 機器數:符號數值化的數據表示方法,用0、1表示符號
- 三種常見的機器數:設定點數的形式爲X0X1X2X3 … Xn
例 求下列各數的原碼、補碼和反碼
- X = +1011
[X]原 = [X]反 = [X]補 = 01011 - X = -1011
[X]原 = 11011 [X]反 = 10100 [X]補 = 10101 - 0的表示
[+0]原 = 00000 [-0]原 = 10000
[+0]反 = 000000 [-0]反 = 11111
[+0]補 = 00000 = [-0]補
<3> 常見機器數的特點
1. 原碼
- 表示簡單:[X]原 = 2n - X
- 運算複雜:符號位不參加運算,要設置加法、減法器
[X]原 + [Y]原
(不能直接判定是執行加法還是減法運算,分同號和異號)
- 0的表示不唯一
2. 反碼
- 表示相對原碼複雜;[X]反 = 2n+1 + X - 1
- 運算相對原碼簡單,符號位參加運算,只需要設置加法器,但符號位的進位需要加到最低位
- 0的表示不唯一
反碼運算舉例
3. 補碼
- 表示相對原碼複雜:[X]補 = 2n+1 + X
- 運算簡單:只需設置加法器
- 0表示唯一
補碼中模的概念:符號位進位後後所在位的權值
4. 移碼(增碼)
- 移碼錶示浮點數的階碼,IEEE754中階碼用移碼錶示
- 設定點整數X的移碼形式爲 X0X1X2X3 … Xn,則移碼的定義是:
[X]移 = 2n + X -2n < X < 2n (X爲真值,n爲X的整數位位數) - 具體實現:數值位與X的補碼相同,符號位與補碼相反
例 X = +10101 [X]補 = 010101 [X]移 = 110101
X = -10101 [X]補 = 101011 [X]移 = 001011
01011 [X]移 = 001011
注: 在機器數上,我們一定不能夠說"0" 是表示整數的符號,“1” 是表示複數的符號