Liczba 11110101₍U₂₎ jest zapisana w kodzie U2, czyli w kodzie uzupełnień do dwóch (ang. two's complement). To najpopularniejszy sposób reprezentacji liczb całkowitych ze znakiem w systemach komputerowych. Pierwszy bit od lewej to bit znaku – jeśli jest równy 1, mamy do czynienia z liczbą ujemną. Tutaj jest właśnie taki przypadek. Żeby odczytać taką liczbę, najpierw zamieniamy wszystkie bity na przeciwne (0 na 1, 1 na 0), a następnie dodajemy 1 do uzyskanego wyniku. W tym przypadku otrzymujemy: zamiana bitów daje 00001010, a po dodaniu 1 wychodzi 00001011, czyli 11 dziesiętnie. Ale ponieważ zaczęliśmy od liczby ujemnej, końcowy wynik to -11. To się często przydaje np. przy analizie rejestrów procesorów albo gdy pracujesz z mikrokontrolerami i musisz prawidłowo obsługiwać liczby ujemne. Swoją drogą, kod U2 pozwala na łatwiejsze operacje arytmetyczne i wykrywanie przepełnień, dlatego jest standardem w większości architektur sprzętowych. Moim zdaniem, dobrze znać ten algorytm, bo to podstawa przy pracy z systemami niskopoziomowymi i programowaniem sterowników. Przy okazji, warto pamiętać, że znak liczby i jej wartość są zakodowane w tej samej sekwencji bitów, co bardzo upraszcza projektowanie układów logicznych.
Kod U2, czyli uzupełnień do dwóch, to kluczowy sposób zapisywania liczb całkowitych ze znakiem w systemach cyfrowych. Często myli się go z prostym zapisem binarnym liczb naturalnych albo traktuje pierwszy bit jako zwykły bit wartości, a nie bit znaku. Takie uproszczenie prowadzi do błędnych odczytów. Na przykład, jeśli ktoś uzna, że 11110101 binarnie to po prostu 245 dziesiętnie, to niestety nie bierze pod uwagę mechanizmu zapisu liczb ujemnych w U2 – a ten jest zupełnie inny niż „czysta” binarna reprezentacja liczb dodatnich. Tak samo, gdy ktoś interpretuje ten ciąg bitów jako 11 lub -245, to pomija fakt, że konwersja z U2 wymaga precyzyjnej analizy bitu znaku i szeregu działań odwrotnych (zamiana bitów, dodanie 1). Najczęstszym błędem jest nieuwzględnienie, że liczby zaczynające się od '1' są ujemne – to bardzo typowa pomyłka wśród początkujących. Branżowe standardy, takie jak architektura x86 czy ARM, wszędzie stosują U2 i wymagają poprawnej interpretacji tych zapisów, szczególnie przy programowaniu w językach niskiego poziomu albo obsłudze pamięci. W praktyce, błędna analiza takiej liczby może prowadzić do poważnych błędów logicznych w algorytmach przetwarzających dane binarne – np. w sterownikach sprzętowych czy przy przesyłaniu danych przez magistrale. Z mojego doświadczenia wynika, że rozumienie kodu U2 to absolutna podstawa w elektronice cyfrowej i programowaniu niskopoziomowym – dla własnego spokoju warto poćwiczyć ręczne przeliczanie takich liczb i pamiętać, że znakiem liczby jest właśnie pierwszy bit, a cała reszta wymaga specjalnego traktowania, gdy interpretujemy wartość dziesiętną.