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?