Wykład 2 2-1 Kodowanie informacji PoniewaŜ komputer jest urządzeniem zbudowanym z układów cyfrowych, informacja przetwarzana przez niego musi być reprezentowana przy pomocy dwóch stanów - wysokiego i niskiego, czyli musi występować w postaci binarnej. Potrzebne są reguły przekształcania róŝnych postaci informacji na postać binarną. Kody liczbowe Kodem liczbowym nazywamy taki kod, który liczbom dowolnego systemu będzie przyporządkowywał słowa kodowe w postaci zerojedynkowej. Naturalny Kod Binarny (NKB) JeŜeli dowolnej liczbie przyporządkujemy odpowiadającą jej liczbę binarną, to otrzymamy naturalny kod binarny (NKB). Liczba (10) Kod NKB 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 10 1010 11 1011 12 1100 13 1101 14 1110 15 1111 W naturalnym kodzie binarnym za pomocą n bitów moŝna zapisać liczbę dwójkową z zakresu: 0 L 2 n -1. Liczba bitów n 2 n Zakres liczb 1 2 0 1 2 4 0 3 3 8 0 7 4 16 0 15 5 32 0 31
Wykład 2 2-2 8 256 0 255 10 1 024 0 1 023 16 65 536 0 65 535 32 4 294 967 296 0 4 294 967 295 Kody BCD Kod NBCD (BCD 8421) (Binary-Coded Decimal czyli kod dziesiętny zakodowany dwójkowo) polega na zakodowaniu kolejnych cyfr dziesiętnych liczby dwójkowo przy uŝyciu czterech bitów. Taki zapis pozwala na łatwą konwersję liczby do i z systemu dziesiętnego, jest jednak nadmiarowy (wykorzystuje tylko 10 czterobitowych układów z 16 moŝliwych). Nazwa BCD 8421 pochodzi od pierwszych czterech wag w systemie dwójkowym naturalnym. Stosowany głównie w urządzeniach elektronicznych z wyświetlaczem cyfrowym (np. w kalkulatorach, miernikach cyfrowych) i w zastosowaniach finansowych informatyki (ujednoznacznia zapis części ułamkowych kwot i ułatwia dziesiętne zaokrąglanie). Wiele mikroprocesorów posiada rozkazy umoŝliwiające wykonanie operacji arytmetycznych na liczbach BCD. Kodowanie cyfr dziesiętnych: Cyfra (10) Kod BCD (8421) 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 7249 (10) = 0111 0010 0100 1001 (BCD) 1000 0110 0111 0010 0101 (BCD) = 86725 (10) Zalety: - prostsza konwersja do postaci dogodnej do wyświetlenia - niektóre wartości niecałkowite (np. 0,2) mają w kodzie BCD, w przeciwieństwie do NKB, skończoną reprezentację, dzięki temu system BCD wprowadza mniejsze błędy obliczeń - mniejsze błędy zaokrąglenia liczb w systemie o podstawie dziesięć
Wykład 2 2-3 Wady: - operacje arytmetyczne w kodzie BCD są bardziej skomplikowane i wolniejsze niŝ w NKB, wymagają korekcji dziesiętnej.
Wykład 2 2-4
Wykład 2 2-5 Inne kody BCD: Cyfra (10) BCD 8421 Excess-3 BCD 2421 BCD 84-2-1 0 0000 0011 0000 0000 1 0001 0100 0001 0111 2 0010 0101 0010 0110 3 0011 0110 0011 0101 4 0100 0111 0100 0100 5 0101 1000 1011 1011 6 0110 1001 1100 1010 7 0111 1010 1101 1001 8 1000 1011 1110 1000 9 1001 1100 1111 1111
Wykład 2 2-6 Kody te są kodami samouzupełniającymi, czyli uzupełnienie do 1 (negacja) liczb dwójkowych w tych kodach daje uzupełnienie do 9 odpowiednich liczb dziesiętnych. Upraszcza to wykonywanie niektórych operacji arytmetycznych. Kod Excess-3 (XS3) Kod Excess-3 (XS-3, z nadmiarem 3) powstaje poprzez dodanie wartości 3 do cyfry dziesiętnej i zapisanie jej w kodzie BCD. Cyfry 5-9 są lustrzanym odbiciem cyfr 0-4 z zanegowanymi bitami. 159 (10) = 0100 1000 1100 (XS3) Kod BCD 2421 (Aikena) Jest kodem wagowym o wagach 2, 4, 2, 1, z tym Ŝe waga nie jest prostą funkcją pozycji nie jest to więc kod pozycyjny. Cyfry 5-9 są lustrzanym odbiciem cyfr 0-4 z zanegowanymi bitami. Kod Johnsona (kołowy) Wymaga pięciu bitów do zakodowania kaŝdej cyfry dziesiętnej. Charakteryzuje się specyficznym rozkładem zer i jedynek. Cecha ta znacznie upraszcza dekodowanie. Liczba jedynek zwiększa się (począwszy od najmniej znaczącego bitu) aŝ do wszystkich bitów równych 1. Następnie jedynek zaczyna ubywać (począwszy od najmniej znaczącego bitu) aŝ do osiągnięcia wartości 10000. Jest kodem nadmiarowym. Cyfra (10) Kod Johnsona 0 00000 1 00001 2 00011 3 00111 4 01111 5 11111 6 11110 7 11100 8 11000 9 10000 Kody 1 z N (pierścieniowe) W kodzie 1 z N długość słowa jest równa N czyli liczbie kodowanych słów. Najbardziej rozpowszechnionym jest kod 1 z 10. Jest to kod wagowy o wagach 9876543210. Jest kodem nadmiarowym, detekcyjnym. W czasie wykonania
Wykład 2 2-7 operacji moŝna kontrolować liczbę jedynek brak jedynki lub więcej niŝ jedna wskazuje na błąd. Cyfra (10) Kod NKB Kod 1 z 10 0 0000 0000000001 1 0001 0000000010 2 0010 0000000100 3 0011 0000001000 4 0100 0000010000 5 0101 0000100000 6 0110 0001000000 7 0111 0010000000 8 1000 0100000000 9 1001 1000000000 Kod 2 z 5 5-bitowy kod posiada stałą liczbę jedynek w zapisie (ze stałym indeksem), czyli 2 (kaŝdy 5-bitowy kod ma 2 jedynki i pozostałe bite zerowe). Jest to kod wagowy, występują róŝne wersje, zaleŝnie od przyjętych wag (np. 01236, 74210). Jest kodem nadmiarowym, detekcyjnym. Stosowany w kodach kreskowych. Cyfra dziesiętna 2 z 5 (01236) 2 z 5 (74210) 0 01100 11000 1 11000 00011 2 10100 00101 3 10010 00110 4 01010 01001 5 00110 01010 6 10001 01100 7 01001 10001 8 00101 10010 9 00011 10100 Kod Graya Kod dwójkowy bezwagowy, niepozycyjny, charakteryzujący się tym, Ŝe dwa kolejne słowa kodowe róŝnią się tylko stanem jednego bitu. Jest kodem cyklicznym - ostatni i pierwszy wyraz tego kodu spełniają zasadę róŝnicy tylko na jednym bicie. Ma wiele zastosowań w technice cyfrowej, automatyce, robotyce. Konstruowanie kodu Graya:
Wykład 2 2-8 1. Dopisać te same słowa kodowe, ale w odwrotnej kolejności (odbicie lustrzane) 2. Do początkowych wyrazów dopisać bit o wartości zero, natomiast do odbitych lustrzanie bit o wartości 1. Konwersja liczb w kodzie NKB na kod Graya 1. liczbę w postaci binarnej przesunąć o jeden bit w prawo, młodszy bit odrzucamy, na początku zapisujemy bit o wartości 0. 2. wykonać operację XOR na poszczególnych bitach liczby binarnej NKB oraz liczby otrzymanej po przesunięciu. Przykład 20 (10) = 10100 (2) 10100 >> 1 = 01010 10100 XOR 01010 11110 (GRAY)
Wykład 2 2-9 Konwersja z kodu Graya na kod binarny NKB 1. Przepisać najstarszy bit z kodu Graya do najstarszego bitu słowa dwójkowego. Bity te w obu kodach mają tę samą wartość. 2. Dla obliczenia kaŝdej kolejnej cyfry wykonać operację XOR na odpowiednim bicie kodu Graya oraz poprzednio wyznaczonej cyfrze kodu NKB. 1011 (2) = 1101 (GRAY) Reprezentacja liczb w komputerze Formaty słów liczbowych: - stałopozycyjny (stałoprzecinkowy) - zmiennopozycyjny (zmiennoprzecinkowy)
Wykład 2 2-10 Reprezentacja stałopozycyjna W formatach stałopozycyjnych przecinek umieszczony jest w stałej pozycji. Liczby stałoprzecinkowe mogą występować: - z przecinkiem na skrajnej prawej pozycji (reprezentacja całkowitoliczbowa) - z przecinkiem na skrajnej lewej pozycji (reprezentacja ułamkowa) - jako liczba zawierająca część całkowitą i ułamkową stałego rozmiaru Reprezentacja całkowitoliczbowa liczb bez znaku Słowo maszynowe w komputerze ma określoną szerokość. Zwykle szerokość słowa maszynowego wynosi 1, 2 lub 4 bajty.
Wykład 2 2-11 Wartość liczby całkowitej zapisanej w n-bitowym słowie maszynowym wynosi: L = c 0 2 0 + c 1 2 1 + c 2 2 2 +... + c n-2 2 n-2 + c n-1 2 n-1 = i= n 1 0 c 2 i i Zakres liczb wynosi: 0 L 2 n -1. Zakres liczb całkowitych bez znaku przechowywanych w jednym bajcie (1B) wynosi 0... 255. MSB (Most Significant Bit) - najbardziej znaczący bit, o największej wadze LSB (Least Significant Bit) - najmniej znaczący bit, o najmniejszej wadze 00000000 (2) = 0 (minimalna liczba) 11111111 (2) = 2 8-1 = 255 (maksymalna liczba) Zakres liczb całkowitych bez znaku przechowywanych w dwubajtowym słowie (word) wynosi 0... 65 535. 00000000 00000000 (2) = 0 (minimalna liczba) 11111111 11111111 (2) = 2 16-1 = 65 535 (maksymalna liczba) Zakres liczb całkowitych bez znaku przechowywanych w czterobajtowym słowie (double word) wynosi 0... 4 294 967 295.
Wykład 2 2-12 00000000 00000000 00000000 00000000 (2) = 0 (minimalna liczba) 11111111 11111111 11111111 11111111 (2) = 2 32-1 = 4 294 967 295 (maksymalna liczba).