5.1.6. Reprezentacja binarna liczb ujemnych
Liczba ujemna w systemie dziesiętnym jest poprzedzana znakiem minus. W komputerze, każda informacja musi mieć postać ciągu zer i jedynek, dlatego znak liczby jest reprezentowany przez dodatkową cyfrę dwójkową, zwaną hitem /naku, która poprzedza właściwe cyfry liczby. Cyfra l na pozycji bitu znaku zastępuje tradycyjny znak minus w zapisie liczb ujemnych, a O występuje zawsze przed liczbami nieujemnymi. Bitu znaku liczby w reprezentacji binarnej nie można pominąć.
Zgodnie z tą umową, jeśli liczba jest reprezentowana na siedmiu bitach, włącznie z bitem znaku, to mamy (bit znaku został pogrubiony):
25 = 0011001 -25 = 1011001
W reprezentacji dziesiętnej suma danej liczby i jej przeciwnej zawsze daje ten sam wynik - zero. Tak niestety nie jest, gdy ujemne liczby binarne różnią się od dodatnich tylko bitem znaku - przekonajcie się o tym, wybierając w tabeli 5.1 kilka par liczb przeciwnych z trzeciej kolumny oraz odpowiadające im rozwinięcia binarne z pierwszej kolumny w tej tabeli.
Własność sumowania do zera pary liczb przeciwnych w zapisie binarnym ma reprezentacja uzupełnieniowa, zwana również kodem uzupełnieniowym.
Tworzymy ją w następujący sposób. Dla dowolnej liczby całkowitej a, jej reprezentacja uzupełnieniowa na n bitach, przeznaczonych na reprezentację, (włącznie z bitem znaku) ma postać:
• reprezentacja binarna liczby a, gdy a Ⴓ O
• reprezentacja binarna liczby 2 n + a, gdy a < O
W tym przypadku dla n=7 mamy:
25 = 0011001
-25 = 1100111, gdyż ma to być reprezentacja liczby 27 + (-25) = 128 - 25 = 103, Sprawdzimy, ile wynosi suma podanych wyżej liczb:
25 + (-25) = 0011001 + 1100111 = (1) 0000000
Wynik ograniczyliśmy do 7 bitów, bo na tylu bitach są pamiętane obie dodawane liczby, zatem pomijamy bit o wartości l (tu występuje on w nawiasie) powstały z przeniesienia.
4 Ćwiczenie 5.12. Sprawdź na podstawie definicji kodu uzupełnieniowego, że w tej reprezentacji suma liczby i jej przeciwnej, zapisanych na n bitach, zawsze jest równa 2n. Pamiętaj przy tym, że liczba 2n w reprezentacji binarnej składa się z jedynki i n zer.
Tabela 5.1 umożliwia prześledzenie różnych interpretacji czterech bitów, jako binarnej reprezentacji liczb.
Przy wykorzystaniu algorytmów "mnożących" takich jak algorytm Hornera skracamy diametralnie czas wykonywania, rozwiązywania zadania poprzez znaczne ograniczenie czynności mnożenia, która jest bardzo czasochłonna. Przykładowo dla wielomianu stopnia 3 przy tradycyjnym rozwiązaniu