計算機組成原理之?dāng)?shù)據(jù)的表示及運算
定點數(shù)
定點數(shù):計算機中約定機器數(shù)小數(shù)點位置牲距,小數(shù)點的位置固定的數(shù)江咳。
- 定點整數(shù):小數(shù)點位置約定在最低位之后
- 定點小數(shù):小數(shù)點位置約定在最高位之后
編碼方式 | 取值范圍(n 位機器數(shù)逢净,n從 0 開始數(shù)) | 最大值(以 8 位機器數(shù)為例) | 最小值 |
---|---|---|---|
原碼:最高位符號位,數(shù)據(jù)位為 2 進(jìn)制真值 | ~ | 符號位取 0 歼指,數(shù)據(jù)位全 1 爹土。0111 1111 : 127 |
符號位取 1,數(shù)據(jù)位全 1踩身。1111 1111 : -127 |
反碼:最高位為符號位胀茵,數(shù)據(jù)位為原碼取反 | ~ |
0111 1111 : 127 |
1000 0000 : -127 |
補碼:反碼值 + 1 。權(quán)值公式為 | ~ |
0111 1111 : 127 |
1000 0000 -128 |
移碼:補碼符號位取反挟阻。 | ~ |
1111 1111 : 127 |
0000 0000 : -128 |
注:無符號數(shù)的編碼具有唯一性琼娘。有符號數(shù)正數(shù)的原碼峭弟、反碼、補碼相同脱拼,移碼與補碼符號位相反瞒瘸。
運算
移位運算
- 算數(shù)移位:左移一次為乘 2 ,右移一次為除以 2 熄浓。
- 算數(shù)移位的對象是帶符號數(shù)情臭,移位過程中符號位不變。
- 正數(shù)移位直接添 0 赌蔑,負(fù)數(shù)原碼反碼移位直接添 0 俯在,補碼左移添 0 ,右移添 1 娃惯。
- 邏輯移位:添 0
- 循環(huán)移位:帶進(jìn)位與不帶進(jìn)位的意思是數(shù)據(jù)位移動的時候帶不帶 CF 標(biāo)志位跷乐。
- 不帶進(jìn)位的循環(huán)移位:因移動而丟失掉的數(shù)據(jù)位要存儲到 CF 標(biāo)志位中。CF 標(biāo)志位不參與循環(huán)石景。
定點數(shù)加減運算溢出判斷
溢出:運算結(jié)果超過機器可以表示的數(shù)劈猿。ps:產(chǎn)生進(jìn)位并不等于溢出。
- 1 位符號位:兩操作數(shù)符號同潮孽,結(jié)果與操作數(shù)符號不同,則溢出筷黔。
- 2 位符號位:運算結(jié)果符號位 S1 異或 S2往史,結(jié)果為 1 則溢出。
- 01:正溢出
- 10:負(fù)溢出
- 00:結(jié)果為正數(shù)佛舱,無溢出
- 11:結(jié)果為負(fù)數(shù)椎例,無溢出
- 數(shù)據(jù)位最高位進(jìn)位情況:與符號位進(jìn)位不同則溢出。
強制類型轉(zhuǎn)換
C 語言中的類型轉(zhuǎn)換結(jié)果保持機器數(shù)位值不變请祖,只是改變了解釋這些位的方式订歪。
- 大字長變量向小字長變量轉(zhuǎn)換時直接截斷高位部分
- 小字長變量向大字長變量轉(zhuǎn)換時保持低位不變,高位擴(kuò)展為原數(shù)字的符號位
浮點數(shù)
浮點數(shù):小數(shù)點位置可變的數(shù)肆捕。
IEEE 754標(biāo)準(zhǔn)
類型 | 數(shù)符 | 階碼 | 尾數(shù) | 總位數(shù) | 偏移量e |
---|---|---|---|---|---|
單精度浮點數(shù) | 1 | 8 | 23 | 32 | 7FH |
雙精度浮點數(shù) | 1 | 11 | 52 | 64 | 3FFH |
臨時浮點數(shù) | 1 | 15 | 64 | 80 | 3FFFH |
注:單精度與雙精度浮點數(shù)采用隱藏尾數(shù)最高位策略,數(shù)據(jù)的最高位總是 1 席纽,隱藏最高位可以使尾數(shù)多表示 1 位有效位捏悬。
浮點數(shù)的加減運算
1. 規(guī)格化兩操作數(shù)
為了提高運算精度,規(guī)定尾數(shù)的最高位數(shù)必須是一個有效值润梯。
-
單符號位規(guī)格化
- 原碼規(guī)格化后尾數(shù)數(shù)據(jù)位最高位為 1
- 補碼規(guī)格化后正數(shù)與原碼同过牙,負(fù)數(shù)數(shù)據(jù)位最高位為 0 甥厦,形如
1.0XXX XX..
-
雙符號位規(guī)格化
- 正數(shù):
00.1XXX XX..
- 負(fù)數(shù):
11.0XXX XX..
- 正數(shù):
左規(guī):尾數(shù)左移(小數(shù)點右移),階數(shù)減小
右規(guī):尾數(shù)右移(小數(shù)點左移)寇钉,階數(shù)增大
ps:基數(shù)不同時刀疙,浮點數(shù)的規(guī)格化形式也不同。當(dāng)基數(shù)為 4 時摧莽,浮點數(shù)尾數(shù)最高兩位不全為 0庙洼;基數(shù)為 8 時,位數(shù)最高三位不全為 0镊辕。
2. 對階
使兩操作數(shù)階數(shù)相等油够,小階向大階對齊,階數(shù)增大尾數(shù)右移征懈。
3. 尾數(shù)求和后規(guī)格化結(jié)果值
4. 舍入
對階和右規(guī)過程中石咬,尾數(shù)低位可能會丟失引起誤差。
- 0 舍 1 入法:尾數(shù)右移時被舍去的最高數(shù)值位為 0 則舍去卖哎;被舍去的最高數(shù)值位為 1 則在尾數(shù)的末位 +1
- 恒置 1
- 最簡單的舍入方法是直接截斷不做處理
浮點數(shù)溢出判斷:階碼是否超過取值范圍鬼悠。下溢時僅當(dāng)作機器 0 處理,上溢時計算機必須中斷運算操作并進(jìn)行溢出處理亏娜。
參考資料:《2019計算機組成原理考研復(fù)習(xí)指導(dǎo)》焕窝、《深入理解計算機系統(tǒng)》