System U2

powrót

System U2 inaczej kod uzupełnień do dwóch jest przeznaczony do przechowywania liczb całkowitych dodatnich i ujemnych. W języku C++ zmienne typu intlong long,  czy char używają tego systemu do przechowywania wartości. Żeby można było wykonywać operacje w tym systemie, należy określić na ilu bitach będziemy operować. 

Zakres wartości dla n bitów mieści się w przedziale:

$$[-2^{n-1};\ 2^{n-1}-1]$$,

a więc na ośmiu bitach możemy przechować liczby z zakresu $$[-128;\ 127].$$

Zamiana liczb dodatnich

Dla przykładu przedstawimy liczbę $$50$$ na ośmiu bitach w U2.

Najpierw zamieniamy ją na system dwójkowy:

$$50\ =\ (110010)_2$$

Następnie z lewej strony dopełniamy zerami tak, aby w sumie otrzymać osiem bitów i w rezultacie otrzymujemy:

$$50\ =\ (00110010)_{U2}$$

Zamiana liczb ujemnych

Teraz zamieńmy liczbę $$-50$$ na system U2. Tu algorytm jest bardziej skomplikowany.

W pierwszym kroku wyznaczamy wartość bezwzględną z tej liczby:

$$|-50|=50$$

W drugim kroku otrzymaną liczbę zamieniamy na postać binarną:

$$50\ =\ (110010)_2$$

W trzecim kroku przedstawiamy ją na ośmiu bitach:

$$50\ =\ 00110010$$

W czwartym kroku negujemy wszystkie bity (każdy bit zamieniamy na przeciwny: zero na jedynkę, jedynkę na zero):

~$$(00110010)\ =\ 11001101$$

Na końcu zwiększamy otrzymaną postać o 1:

$$11001101\ +\ 1\ =\ 11001110$$

W ten sposób otrzymaliśmy liczbę $$-50$$ zapisaną na ośmiu bitach w systemie U2:

$$-50\ =\ (11001110)_{U2}$$.

Zamiana z U2 na system dziesiętny

Najbardziej znaczący bit (ten który stoi po lewej stronie) określa znak liczby. Jeśli jest to jedynka, to liczba jest ujemna, w przeciwnym razie jest ona dodatnia. Dla przykładu posłużmy się otrzymaną wyżej postacią:

$$(11001110)_{U2}$$

Teraz odliczamy kolejne potęgi dwójki począwszy od strony lewej. Przy pierwszym bicie stoi $$2^0$$, przy następnym $$2^1$$, ..., natomiast przy ostatnim $$-2^7$$. Teraz dodajemy tylko te potęgi liczby dwa, które stoją nad cyfrą 1:

$$-2^7+2^6+2^3+2^2+2^1=-128+64+8+4+2=-50$$

Narzędzia

System operacyjny Windows 7 jest wyposażony w program calc.exe (kalkulator), który ma możliwość zamienienia liczby całkowitej w systemie dziesiętnym na system U2. Po uruchomieniu tego programu przechodzimy w widok programisty. W lewym dolnym rogu mamy opcję wyboru liczby bitów, po zaznaczeniu Bajt, będziemy mieli do dyspozycji ich osiem. Następnie wpisujemy liczbę całkowitą i jej postać w systemie U2 będzie widoczna tuż pod paskiem do wpisywania liczb.

kalkulator

 

Kilka przykładów

$$-1$$ na ośmiu bitach: $$11111111$$

$$100$$ na ośmiu bitach: $$01100100$$

$$-20$$ na sześciu bitach: $$101100$$

$$-2$$ na pięciu bitach: $$11110$$.