0
我正在實現一個簡單的(虛擬)ALU和一些其他芯片(加法器,乘法器等)。左移2的補碼和乘法
我對我的數字使用2的補碼錶示法。
對於x和y的乘法,兩個16位數字,我想我使用左移沿着這些線(這是不實際的環路進行當然):
集總結[0..15] = 0
組x'= X
對於i = 0 ... 15 //(Y [0]是LSB和y [15]是MSB)
- 如果y [i] = 1並且移位x'離開,則將x'加和。
(這是標準的方式?)
我的問題是與左移:
如果有我S.T. x [i] = 1,在某點x'的MSB將變爲1,並且否定它。
這是一個問題,因爲例如2 * 2使用上面的方法給出了「-4」。
所以,我的實際問題是:當向左移動時,我是否還需要考慮符號位?
所以左移0110 0000 0000 0000應該產生:0100 0000 0000 0000?而且,保存標誌還是不夠,移位,然後用原來的符號代替當前標誌位? – Paz
這是溢出情況,但是。 - 不,您必須將標誌轉換爲NEG或類似標誌。在二進制補碼中,-1表示全1,依此類推。 –