Autor: Radoslaw Sokol (rsokol_at_magsoft.com.pl)
Data: Fri 01 Feb 2002 - 18:30:58 MET
Hi,
Sauron wrote:
>
> Kto mi na chlopski rozum wytlumaczy na jakiej zasadzie odbywa sie
> odejmowanie w kodzie dwojkowym... Bylbym wdzieczny za kilka przykladow
Nieco NTG :)
Najlepiej to zrobić w tzw. kodzie U2, wtedy jest w sumie najprościej.
Np. chcesz zrealizować działanie 20 - 7 = 13. 20 bin = 010100,
7 bin = 000111. Z 7 można zrobić -7 przez negację wszystkich bitów
i dodanie jedynki: -7 bin = 111000 + 000001 = 111001. Teraz normalnie
binarnie dodajesz:
010100
+ 111001
----------
001101
Wychodzi śliczne 13 :)
Kolejny przykład: 10 - 30 = 001010 - 011110 = 001010 + 100001 + 000001
= 001010 + 100010
001010
+ 100010
---------
101100
Wychodzi liczba ze znakiem (najstarszy bit przechowuje informację o znaku),
więc trzeba przerobić na liczbę bez znaku: 101100 => 010011 => 010100 czyli
-20 (przerabianie dokładnie jak wyżej: negacja i dodać jeden).
Czyste odejmowanie też się da zrobić, ale nie ma to sensu. W 99.9%
przypadków zastępuje się odejmowanie właśnie jak wyżej dodawaniem
liczby przeciwnej zapisanej kodem U2.
-- |""""""""""""""""""""""""""""""""""""""""""""""""""""""""""| | Radosław Sokół | mailto:rsokol_at_magsoft.com.pl | | | http://www.magsoft.com.pl/~rsokol/ | \................... ftp://sokol.gliwicki.necik.pl/ ......./
To archiwum zostało wygenerowane przez hypermail 2.1.7 : Wed 19 May 2004 - 00:11:55 MET DST