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 int, long 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].$$
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}$$
Teraz zamieńmy liczbę $$-50$$ na system U2.
Podsumowując, stosujemy wzór:
$$2^{liczba\ bitów}-|n|$$gdzie n to całkowita ujemna liczba, którą zamieniamy na system U2, a "liczba bitów", to pole, na którym zapisujemy liczbę.
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}$$.
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 prawej. 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$$
System operacyjny Windows 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.
$$-1$$ na ośmiu bitach: $$11111111$$
$$100$$ na ośmiu bitach: $$01100100$$
$$-20$$ na sześciu bitach: $$101100$$
$$-2$$ na pięciu bitach: $$11110$$.