Nadmiar przy dodawaniu liczb ze znakiem
Np. −4 + (−15) = −19
NB(4) = 100, NB(15) = 1111
► wyrównujemy formaty:
NB(4) = 0100
► obliczamy uzupełnienia: U2(4) = 1100, U2(15) = 0001
Spróbujmy dodać −4 + (−15) w kodzie ZU2
1.1100
1.0001
10.1101 → +13???
Przeniesienie z pozycji znaku c
z
= 1 i z pozycji MSB modułu c
m
= 0
Test nadmiaru:
c
z
⊕ c
m
= 1 →
ERROR!!!
Aby uniknąć błędu:
► po wyrównaniu formatów argumentów, zwiększamy formaty o 1 bit
NB(4)
=
0
0100,
NB(15) =
0
1111
► obliczamy uzupełnienia U2(4) = 11100,
U2(15) = 10001
► dodajemy argumenty w kodzie ZU2
1.11100
1.10001
11.01101
► aby otrzymać wynik w kodzie ZM,
obliczamy U2(01101) = 10011 = 19
10
OK.!
WNIOSKI
1. JEŚLI TRZEBA DODAWAĆ LICZBY W KODZIE ZU2
KTÓRE MOGĄ BYĆ
OBYDWIE DODATNIE
LUB
OBYDWIE UJEMNE
TO NALEŻY
ZWIĘKSZYĆ DŁUGOŚĆ SŁOWA MODUŁU O 1 BIT
2. DŁUGOŚĆ SŁOWA ARGUMENTÓW PRZY STOSOWANIU KODU
ZU2
JEST WIĘKSZA O
DWA BITY
(1 BIT ZNAKOWY + 1 BIT
DODATKOWY) W PORÓWNANIU ZE STOSOWANIEM KODU
U2
(bez uwzględnienia bitu przeniesienia)
©J. Kalisz, WAT, 2008