Systemy liczbowe
Strona domowa
Zarys teoretyczny
Naturalny system dwójkowy
Kod uzupełnień do dwóch
Kod znak-moduł
Standard IEEE 754
System szesnastkowy
Ćwiczenia
Naturalny system dwójkowy
Kod uzupełnień do dwóch
Kod znak-moduł
Standard IEEE 754
System szesnastkowy
TEST

Kod uzupełnień do dwóch (U2)

Kod uzupełnień do dwóch zwany często kodem U2 jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych. Jest on zaimplementowany w większości procesorów ponieważ operacje dodawania i odejmowania są w nim wykonywane tak samo jak dla liczb binarnych bez znaku. Wiąże się to z mniejszym zapotrzebowaniem na kody rozkazów procesora. Nazwa kodu wzięła się ze sposobu obliczania liczb przeciwnych. Dla jednobitowej liczby wartość przeciwną obliczamy odejmując daną liczbę od 2 (uzupełniamy jej wartość do dwóch). Najstarszy bit liczby jest bitem znaku liczby, 0 oznacza plus, 1 minus, w dodawaniu i odejmowaniu liczb jest on traktowany jako bit liczby. Niewątpliwą zaletą tego systemu w przeciwieństwie do systemu znak-moduł jest istnienie tylko jednego zera. Wartość dziesiętną liczby zapisanej w kodzie U2 obliczamy wykorzystując poniższy wzór:

bn-1bn-2bn-3...b2b1b0 = bn-1 * -(2n-1) + bn-22n-2 + bn-32n-3 + ... + b222 + b121 + b020

b - bit, cyfra dwójkowa: 0 lub 1
n - liczba bitów w zapisie liczby

Przykład:

Zapis liczby dodatniej:

01101011(U2) = 64 + 32 + 8 + 2 + 1 = 107(10)

Zapis liczby ujemnej:

11101011(U2) = -(27) + 64 + 32 + 8 + 2 + 1 = -128 + 107 = (-21)(10)

Zakres liczby w kodzie uzupełnień do dwóch.
Zakres n bitowej liczby w kodzie U2 wynosi:

Z(U2) = (-2n-1, 2n-1 - 1)

Zakres liczb w kodzie U2 jest niesymetryczny - liczb ujemnych jest o jedną więcej niż liczb dodatnich. Wynika to z tego, że największą liczbę zapisaną w kodzie uzupełnień do dwóch uzyskujemy dla bitu znaku równego 0, a pozostałych bitów równych 1. Ponieważ pozostałe bity przedstawiają wartość w naturalnym kodzie binarnym i jest ich n-1, to

max(U2) = 2n-1 - 1

Z kolei najmniejszą wartość liczby zapisanej w kodzie uzupełnień do dwóch otrzymujemy dla bitu znaku równego 1, a pozostałych bitów równych 0. W tym przypadku wartość liczby jest równa wadze pozycji znakowej, czyli

min(U2) = -(2n-1)

 

Wykonanie Radosław Kędzierski