Kod uzupełnień do jedności – Wikipedia, wolna encyklopedia
Kod uzupełnień do jedności to sposób zapisu liczb całkowitych oznaczany jako ZU1 lub U1. Liczby dodatnie zapisywane są jak w naturalnym kodzie binarnym, przy czym najbardziej znaczący bit – traktowany jako bit znaku – musi mieć wartość 0. Do reprezentowania liczb ujemnych wykorzystywana jest bitowa negacja danej liczby, co sprawia, że bit znaku ma wartość 1. Wynika z tego również występowanie dwóch reprezentacji zera: +0 (00000000U1) i −0 (11111111U1). W związku z tym liczby zapisane w ZU1 na n bitach pochodzą z zakresu:
co daje zakres identyczny jak w reprezentacji znak-moduł. Dla 8 bitów (bajta) są to liczby od −127 do 127.
Porównanie U1 z U2
[edytuj | edytuj kod]Dla reprezentacji bitowej, w której najstarszy bit jest równy 0 (0xxxxxx...x), nie ma znaczenia, czy jest to reprezentacja U1 czy U2 – wartość liczby jest taka sama. Reprezentacje z najstarszym bitem równym 1 oznaczają ujemne liczby lub −0 w U1 oraz ujemne liczby w U2, stąd jeśli reprezentację bitową 1xxxxx...x potraktować jako zapis U1, liczba będzie o 1 większa, niż gdyby potraktować go jako U2[1].
Dodawanie i odejmowanie
[edytuj | edytuj kod]Dodawanie liczb w U1 jest podobne do dodawania liczb binarnych, z tą różnicą, że powstałe przeniesienie poza najstarszy bit należy dodać do wynikowej sumy. Na przykład obliczając wartość wyrażenia 7 + (−3) oczekujemy wyniku 4. Dodając binarnie te liczby zapisane w kodzie U1, dostaniemy liczbę 3 oraz przeniesienie, które dodajemy do otrzymanej liczby aby otrzymać ostateczny wynik 4:
111111 (przeniesienia na poszczególnych bitach) 00000111U1 710 + 11111100U1 −310 ---------- 100000011 00000011U1 310 (wynik obcięty do zakresu liczby) + 00000001U1 110 (dodajemy przeniesienie) ---------- 00000100U1 410 (ostateczny wynik)
Aby wykonać odejmowanie wystarczy odwrócić bity drugiej liczby i tak powstałe liczby dodać.