9 Zapisy Liczby dwójkowej ze znakiem
Istnieją następujące sposoby:
- Znak moduł - ZM
- Uzupełnienie do 1
- Uzupełnienie do 2
Najlepszy i najczęściej używany jest uzupełnienie do 2 (U2)
Znak moduł - ZM
Obok najstarszego bitu liczby (pierwszy od lewej) dodaję się bit znaku. Wynosi on 0 dla liczby dodatniej i 1 dla liczby ujemnej. Pozostałe bity reprezentują wartość bezwzględną liczby.
np liczba 12 to w systemie dwójkowym 1100 (0*1 + 0*2 + 1*4 + 1*8) (6 Dwójkowy system liczbowy)
liczba ta z znakiem plus w systemie znak moduł, zakładając że reprezentujemy ją w 8 - bitowej zmiennej wygląda tak:
0.0001100
liczba ta z znakiem minus będzie miała 1 na początku:
1.0001100
System ten nie jest najczęściej używany, ponieważ ma wady. Mamy w nim dwa zera 0 i -0.
Kolejnym kłopotem jest implementacja operacji arytmetycznych i innych rzeczy…
Uzupełnienie do 1
Liczby dodatnie zapisujemy tak jak w systemie znak moduł, ale gdy liczba jest ujemna następuje odwrócenie wszystkich bitów liczby ( zamiania zer na jedynki, i jedynek na zera)
przykład:
liczba 12 = 1100
+12 w systemie u1 - 0.0001100
-12 w systemie u2 - 1.1110011
Uzupełnienie do 2
Liczby dodatnie zapisujemy tak samo jak w systemie znak moduł i u1. A kiedy liczba jest ujemna robimy uzupełnienie do 1 (odwracamy wszystkie bity liczby) i dodajemy liczbę jeden.
przykład:
liczba 12 = 1100
+12 w systemie uzupełnienia do 2 :
0.0001100
-12 w systemie uzupełnienia do 2 = 1.1110100
Dlaczego dodawanie w systemie uzupełnienia do 2 jest fajne?
Dlatego, że będzie ono “kompatybilne” z dodawaniem liczb bez znaków itp
Na przykład. -2 + (-3) = -5
-2 w systemie uzupełnienia do 2 to normalnie 14
-3 to 13
14 + 13 to 27
Sumator który zbudowaliśmy odrzuci bit “carry” bo 27 potrzebuje 5 bitów i zostanie nam 11, a 11 w systemie uzupełnienia do 2 to -5