计算机组成原理--数的表示及计算
文章目錄
- 三、數的表示及計算
- 1.定點數的表示
- 1.原碼表示范圍:
- 2.補碼表示的范圍
- 2.定點數運算
- 1.加減運算:
- 2.移位運算
- **邏輯移位:** 邏輯左移,邏輯右移
- **循環移位:**
- **算數移位:**
- 溢出過半:
- 3.浮點數的表示
- 4.浮點數的運算
三、數的表示及計算
1.定點數的表示
1.原碼表示范圍:
符號位和數據為i相對獨立
N位原碼表示范圍:
二進制形式:
[1111…11,01111…111]
整數:
[?(2n?1?1),2n?1?1][-(2^{n-1}-1),2^{n-1}-1][?(2n?1?1),2n?1?1]
共計:2n?12^n-12n?1
小數:
[?(1?2?(n?1)),1?2?(n?1)][-(1-2^{-(n-1)}),1-2^{-(n-1)}][?(1?2?(n?1)),1?2?(n?1)]
共計:2n?12^n-12n?1
因為0有兩種表示,所以比N為能表示的狀態少1種。
2.補碼表示的范圍
N位補碼表示范圍
| 補碼 | 1100 | 1110 | 1111 | 0000 | 0001 | 0010 | 0100 |
思考:
[1000]補 的真值是誰 ?
是-8,也就是說補碼可以表示出比原碼多一位的數,而且0的表示方法唯一。
考慮N為補碼的表示形式:
| 最大正數 | 011111…1111 | $2^{n-1}-1 | 1?2?(n?1)1-2^{-(n-1)}1?2?(n?1) |
| 最大負數 | 11…11111111 | ?2n?1-2^{n-1}?2n?1 | ?(1?2?(n?1))?2?(n?1)=?1-(1-2^{-(n-1)})-2^{-(n-1)}=-1?(1?2?(n?1))?2?(n?1)=?1 |
2.定點數運算
1.加減運算:
補碼的加減法基本公式:
[A+B]補=[A]補+[B]補
[A-B]補=[A]補+[-B]補
優點:直接運算
溢出的判斷:
雙符號位法:兩個符號位同時運算,雙符號位不同則溢出,上溢和下溢。
2.移位運算
邏輯移位: 邏輯左移,邏輯右移
移出位移走,補位位補0
eg:1010 左移:0100 右移:0101循環移位:
小循環移位小循環左移,小循環右移
移出移入到補位位,同時移入到標記為C中
在數字最前和最后分別有一個C位,儲存溢出位
大循環移位:大循環左移,大循環右移
移出位移入到C位,C位移入到補位位
算數移位:
(1)保留數值的數學意義,左移相當于乘以2,右移相當于除以2
(2)存在溢出或精度喪失
原碼:符號位不動,數值位邏輯左右移
補碼:帶著符號位一起移動
移出位移走。補位位:高位補符號位,地位補零。
溢出過半:
原碼:符號位為0或1,數值位最高位為1
補碼:符號位為0,數值最高位為1;符號位為1,數值最高位為0.
3.浮點數的表示
規則:
1)組成部分、順序
2)每個組成部分位數
3)尾數和階碼表示形式:
尾數:定點小數
階碼:定點整數
一、IEEE754標準
1.格式:
32位(float)和64位(double)
2. IEEE有關階碼的規定
(1)用修正過的移碼表示
修正過的移碼可以表示0和±∞;
(2)有關移碼
e=E?2n?1e=E-2^{n-1}e=E?2n?1
(3)E位全零或者全1的狀態都不用
全0:表示數值0 全1:表示+-∞所以正式的IEEE754標準:
e=E?(2n?1?1)e=E-(2^{n-1}-1)e=E?(2n?1?1)
3. IEEE有關尾數的規定
(1)用修正過的原碼表示尾數
(2)最高數值位必須為1,并且省略。
這樣進一步提高了數據的精度。
(3)什么是規格化的尾數(M)
∣M∣>=1/2=(0.1)2|M|>=1/2=(0.1)_2∣M∣>=1/2=(0.1)2?
因為尾數最高的數值位為1,并且省略。
E:階碼
S:符號位
M:尾數
float:(?1)s?1.M?2E?127(-1)^s*1.M*2^{E-127}(?1)s?1.M?2E?127
double:(?1)s?1.M?2E?1023(-1)^s*1.M*2^{E-1023}(?1)s?1.M?2E?1023
4. IEEE與真值的相互轉換
eg:Float類型413C0000H的真值是多少:
413C0000H=(01000001001111000000000000000000)2413C0000H =(0100 0001 0011 1100 0000 0000 0000 0000)_2413C0000H=(01000001001111000000000000000000)2?
S=0;M=0111;E=10000010S=0;M=0111;E=1000 0010S=0;M=0111;E=10000010
e=(?1)s?1.M?2E?127e=(-1)^s*1.M*2^{E-127}e=(?1)s?1.M?2E?127
=(?1)0?1.01111?2130?127=(-1)^0*1.01111*2^{130-127}=(?1)0?1.01111?2130?127
=(1011.11)2=(1011.11)_2=(1011.11)2?
=11.75=11.75=11.75
5. Float類型的表示范圍
二、非IEEE754標準
1.有機組成部分
每部分可以用不同的編碼表示,最常見的階碼和尾數都用補碼表示。
2. 表示范圍
(1)為什么要規格化?
為了進一步提高數據精度
(2)規格化的本質是什么?
∣尾數∣>=0.5|尾數|>=0.5∣尾數∣>=0.5
(3)這種本質的體現是什么?
尾數分別用原碼和補碼表示的時候規格化的尾數是什么形式的?
原碼:數值最高位為1
補碼:1.0xxxxx或者0.1xxxxx或者1.1xxxxx
(4)IEEE754標準如何做的規劃化?
尾數最高的數值位為1,并且省略。
設某浮點數階碼和尾數都用4位二進制補碼表示。
4.浮點數的運算
一、IEEE754標準的加減運算
(1)0操作數檢查
(2)對階:小階向大階對齊,尾數右移
(3)尾數加減:補碼雙符號位
(4)規格化: 左規;右規
(5)舍入,階碼采用補碼雙符號位運算。0舍1入。
(6)判斷溢出
在溢出判斷中,什么樣的情況才算溢出?
階碼溢出才叫溢出
尾數溢出是否標志著結果的溢出?
尾數溢出不表示結果的溢出
總結
以上是生活随笔為你收集整理的计算机组成原理--数的表示及计算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10磁贴怎么改颜色 win10磁贴
- 下一篇: 一文带你学会 UML 统一建模语言