Re: Odejmowanie w kodzie dwojkowym

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