Kod uzupełnień do jedności

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ć.

Przypisy

[edytuj | edytuj kod]

Zobacz też

[edytuj | edytuj kod]