Dodawanie i odejmowanie liczb o przeciwnych znakach w Z80?

0

Jednego nie rozumiem.

Z tego, co się orientuję (popraw mnie ktoś, jeśli się mylę), to dodawanie liczb o przeciwnych znakach jest zaimplementowane jako dodawanie właśnie - nie jako odejmowanie modułu drugiej liczby od pierwszej.

Z drugiej strony, Z80 zapamiętuje liczby w ten sposób, że najstarszy bit to jest bit znaku. I tak na przykład 3 będzie miało reprezentację 00000011, natomiast -1 będzie miało reprezentację 10000001.

No ale to się jakby nie zgadza. No bo 3+(-1)=2. Dodając jednak reprezentacje obu liczb w Z80 będziemy mieli 00000011+10000001=10000100, czyli -4.

Gdzie robię błąd?

0

Jeśli zapis liczb jest taki jak przedstawiłeś to jest to kod ZM(znak-moduł) i operacje arytmetyczne wyglądają trochę inaczej niż na zwykłym zapisie dwójkowym.

Tutaj masz to opisane -> http://edu.i-lo.tarnow.pl/inf/alg/006_bin/0016.php#arytmetyka

0

Nie jestem ekspertem od Z80, ale czy tam nie wykorzystywano zapisu uzupełnieniowego do 2? Wtedy bit znaku się zgadza a i reszta arytmetyki mocno się upraszcza.

1 użytkowników online, w tym zalogowanych: 0, gości: 1