邏輯移位與算術移位
- 邏輯移位:不管邏輯左移還是邏輯右移缺位補0
- 算術移位:1.無符號型值,和邏輯移位相同 2.有符號型值,根據符號位補缺位(和符號位相同)
在下面的原碼一位乘和補碼一位乘都遵循以下規則:
- 1.多余進位舍去
- 2.一直執行到乘數被用完(被移除完)
- 3.原碼最后需要一位,補碼不需要移位
- 4.原碼補碼一位乘取值都不去原乘數的數
原碼一位乘法
定義:
符號位單獨參加運算,數據位取絕對值,每次將一位乘數對應的部分積與原部分積的累加和進行相加,並右移一位,直到乘數的所有位被用完。
舉例
X=0.1101,Y=-0.1011,求XY
1.設置部分積,乘數與被乘數的絕對值
A=00.0000,B=|X|=00.1101,C=.1011
2.若判斷位(C的最后一位)為0,則部分積+0000;若為1,部分積+B
接着我們對符號的確定,是通過對被乘數與乘數的符號位進行異或判斷的。
XY=(0⊕1).10001111=1.10001111
補碼一位乘
補碼一位乘在操作和判斷位上和原碼一位乘有區別(原碼一位乘為一位,補碼一位乘為兩位)
例題:X=-01101,Y=-01011,求[XY]補=?
做這道我們首先需要了解,兩位判斷位對應的操作
判斷位 | 操作 |
00 | 右移一位 |
01 | +B補,再右移一位 |
10 | -B補,再右移一位 |
11 | 右移一位 |
B補,-B補,C分別對應 [X]補,[-X]補,[Y]補
所以我們直接可以得到,XY=0010001111