Przeliczanie liczb między systemami binarnym, ósemkowym, szesnastkowym i dziesiętnym. Zapis liczb ujemnych w U2, dodawanie binarne i operacje logiczne z wynikami. Lekcja 2.3 kursu INF.03.
Pozycyjny system liczbowy to sposób zapisu, w którym wartość cyfry zależy od jej miejsca oraz podstawy systemu. Na egzaminie trzeba przeliczyć liczbę, odczytać kolor zapisany szesnastkowo lub rozpoznać wynik działania binarnego. Ten sam zapis bitów może też oznaczać liczbę ujemną, jeżeli zadanie wskazuje kod uzupełnieniowy do dwóch i długość słowa.
Podstawa i wagi pozycji
Podstawa systemu określa liczbę dostępnych cyfr. System dziesiętny DEC (decimal, dziesiętny) ma podstawę 10 i cyfry od 0 do 9. BIN (binary, binarny) ma podstawę 2 oraz cyfry 0 i 1. OCT (octal, ósemkowy) ma podstawę 8, więc cyfra 8 w nim nie występuje. HEX (hexadecimal, szesnastkowy) używa cyfr od 0 do 9 i liter A, B, C, D, E, F o wartościach od 10 do 15.
Pozycje liczy się od prawej, zaczynając od zera. Wartości kolejnych miejsc w BIN to 1, 2, 4, 8, 16, 32 i dalej potęgi dwójki. W HEX to 1, 16, 256 i następne potęgi szesnastki. Zapis 101 może więc oznaczać 101 dziesiętnie albo 5 binarnie. Bez wskazanej podstawy nie wolno zakładać, że wygląd cyfr wystarcza.
Liczbę binarną 101101 przeliczamy przez dodanie wag zajętych przez jedynki. Od lewej są to 32, 8, 4 oraz 1. Suma wynosi 45. Zera na pozycjach 16 i 2 nie wnoszą nic do wyniku, lecz nadal zajmują miejsce. Usunięcie zera ze środka zmieniłoby wagi wszystkich cyfr po jego lewej stronie.
W liczbie szesnastkowej 2D litera D ma wartość 13. Pierwsza pozycja wnosi dwa razy 16, druga 13 razy 1, razem 45. Liczba ósemkowa 55 oznacza pięć razy 8 plus pięć, również 45. To jedna wartość zapisana na trzy sposoby, a nie trzy różne wielkości. W tabeli pomocniczej można dopisywać podstawy do każdej liczby.
Zamiana liczby dziesiętnej
Dzielenie z resztą pozwala otrzymać cyfry w nowej podstawie. Podziel liczbę przez podstawę, zapisz resztę, a otrzymany całkowity iloraz dziel dalej. Zakończ po osiągnięciu ilorazu zero. Reszty odczytaj od ostatniej do pierwszej, ponieważ najpierw wyznaczana jest najmniej znacząca cyfra.
Dla liczby 45 i podstawy 2 kolejne ilorazy to 22, 11, 5, 2, 1 oraz 0. Reszty powstają w kolejności 1, 0, 1, 1, 0, 1. Czytane od końca dają 101101. Kontrola polega na ponownym dodaniu wag: 32 plus 8 plus 4 plus 1 daje 45. Dzięki temu pomylona kolejność reszt nie przejdzie niezauważona.
Przy podstawie 16 wystarczą dwa dzielenia. 45 podzielone przez 16 daje iloraz 2 i resztę 13, którą zapisujemy jako D. Następnie 2 podzielone przez 16 daje iloraz 0 i resztę 2. Odczyt od końca daje 2D. Wyniku nie zapisujemy jako 213, bo reszta 13 ma być jedną cyfrą szesnastkową, a nie dwiema cyframi dziesiętnymi.
Najłatwiej pomylić iloraz z resztą. Iloraz mówi, ile pełnych grup się mieści, a reszta, ile pozostaje. Jeżeli liczba jest parzysta, jej reszta z dzielenia przez dwa wynosi zero, więc ostatni bit jest zerem. Ta prosta kontrola wykrywa część błędów, zanim sprawdzimy całe przeliczenie.
Grupowanie bitów do HEX i OCT
Jedna cyfra HEX odpowiada czterem bitom, ponieważ cztery bity dają 16 możliwych kombinacji. Jedna cyfra OCT odpowiada trzem bitom, bo trzy bity dają osiem kombinacji. Przy liczbach całkowitych grupowanie zaczyna się od prawej. Brakujące zera dopisuje się po lewej, co nie zmienia wartości dodatniej liczby bez znaku.
Dla 101101 grupy czterobitowe to 0010 i 1101, czyli 2 oraz D. Grupy trzybitowe to 101 i 101, czyli 5 oraz 5. Ta metoda omija przejście przez system dziesiętny. Przy zamianie odwrotnej każdą cyfrę zamieniamy na pełną grupę, na przykład A3 na 1010 i 0011. Pominięcie zer wewnątrz drugiej grupy dałoby inną liczbę.
Można porównać zapis w konwerterze systemów liczbowych. Najpierw wybierz podstawę wejściową, potem wpisz wartość. Narzędzie nie odgadnie, czy 10 miało oznaczać dwa, osiem, dziesięć czy szesnaście. Kontrola kalkulatorem ma sprawdzić rachunek, a nie zastąpić określenie danych zadania. Liczby ujemne w kodzie U2
Kod U2, czyli uzupełnienie do dwóch, zapisuje liczby całkowite ze znakiem na ustalonej liczbie bitów. Dla ośmiu bitów zakres wynosi od -128 do 127. Najbardziej znaczący bit ma wagę ujemną -128, a pozostałe wagi to 64, 32, 16, 8, 4, 2 i 1. Bez podania szerokości słowa zapis liczby ujemnej jest niepełny.
Aby zapisać -5 na ośmiu bitach, zacznij od dodatniego 5, czyli 00000101. Odwróć każdy bit: powstaje 11111010. Dodaj jeden: otrzymasz 11111011. Kontrola wag daje -128 plus 64 plus 32 plus 16 plus 8 plus 2 plus 1, czyli -5. Samo odwrócenie bitów nie wystarczy: bez dodania jedynki byłby to inny kod.
Ten sam ciąg 11111011 odczytany bez znaku oznacza 251. To sposób interpretacji decyduje o znaczeniu, a nie sam rysunek bitów. Przy rozszerzaniu U2 powiela się bit znaku, dlatego -5 na 16 bitach zaczyna się od ośmiu jedynek i kończy dotychczasowymi ośmioma bitami. Dopisywanie zer zmieniłoby liczbę ujemną na dodatnią.
Działania i logika bitowa
Dodawanie binarne stosuje przeniesienie: zero plus zero daje zero, zero plus jeden daje jeden, a jeden plus jeden daje zero z jedynką przeniesioną dalej. Dodanie 0101 i 0011 daje 1000, czyli 5 plus 3 równe 8. Odejmowanie można sprawdzić działaniem odwrotnym; 1000 minus 0011 daje 0101. Mnożenie przez dwa przesuwa dodatnią liczbę bez znaku o jedną pozycję w lewo, jeżeli wynik mieści się w przyjętej szerokości.
Operacje logiczne wykonuje się na odpowiadających sobie bitach. AND (I) daje jedynkę, gdy oba bity są jedynkami. OR (LUB) daje jedynkę, gdy przynajmniej jeden jest jedynką. XOR (ALBO) daje jedynkę, gdy bity są różne. NOT (NIE) odwraca bity. Dla 1010 i 1100 wyniki to odpowiednio 1000, 1110 oraz 0110. NOT dla czterech bitów 1010 daje 0101; szerokość musi być ustalona.
Zależności pojedynczych wejść można prześledzić w narzędziu bramki logiczne. Dodawanie liczb i operacja OR mają różne reguły: dla dwóch jedynek OR daje jeden, a dodawanie daje zero z przeniesieniem. To nie są zamienne sposoby sumowania. Na egzaminie
Przed obliczeniem zapisz podstawę, długość słowa i informację o znaku. W pytaniu o U2 nie stosuj zakresu liczb bez znaku. W ośmiobitowym U2 dodanie 01111111 i 00000001 daje 10000000, lecz dodatnie 128 nie mieści się w zakresie. Nastąpiło przepełnienie ze znakiem, a odczytany wynik to -128.
Pułapka: przeniesienie poza słowo i przepełnienie ze znakiem opisują różne zjawiska. W U2 suma dwóch dodatnich liczb nie może poprawnie dać liczby ujemnej.
W zadaniu dotyczącym kolorów HEX dziel zapis na pary cyfr określające składowe barwy. Dla każdej pary działa ta sama metoda wag. Samą interpretację barw opisują lekcje działu grafiki; tutaj najważniejsza jest poprawna zamiana wartości.
Ściąga
wagi BIN
32, 16, 8, 4, 2, 1
HEX do DEC
2D to 2 razy 16 plus 13 = 45
grupowanie HEX
po 4 bity od prawej
grupowanie OCT
po 3 bity od prawej
U2, 8 bitów
zakres -128 do 127
zapis -5 w U2
00000101, odwróć, dodaj 1: 11111011
AND, OR, XOR
1010 i 1100: 1000, 1110, 0110
Pobierz ściągę PDF