Architektura systemów komputerowych Laboratorium 5 Kodowanie liczb i tekstów Marcin Stępniak Informacje. Kod NKB Naturalny kod binarny (NKB) jest oparty na zapisie liczby naturalnej w dwójkowym systemie pozycyjnym. Inaczej mówiąc jest to zwykła liczba binarna bez znaku i bez przecinków. Dla n bitów możemy utworzyć w naturalnym kodzie binarnym liczby z zakresu: <, 2 n > Dla n bitów mamy więc 2 n różnych wartości kodu. Do zapisu liczby naturalnej x potrzebne jest co najmniej log 2 x + bitów, gdzie a jest funkcją podłogi (ang. floor), zaokrąglającą liczbę a w dół..2 Kod BCD BCD (ang. Binary-Coded Decimal - system dziesiętny zakodowany dwójkowo) to sposób zapisu liczby w systemie dziesiętnym polegający na zakodowaniu kolejnych cyfr tej liczby w systemie dwójkowym, przy użyciu tylko czterech bitów. Taki zapis pozwala na łatwą konwersję liczby pomiędzy kodem BCD a systemem dziesiętnym, ale jego wadą jest istniejąca nadmiarowość (wykorzystuje tylko czterobitowych kombinacji z 6 możliwych). Istnieje kilka wariantów zapisu liczb w kodzie BCD. Najpopularniejszy jest BCD
842, w którym kody BCD odpowiadają wartości cyfry w systemie dwójkowym (zob. tab. ). Tabela : Tabela kodów BCD 842 Cyfra dziesiętna BCD 2 3 4 5 6 7 8 9 Przykład liczby w kodzie BCD: 9 2 7 927 () = (BCD).3 Kod Gray a W kodzie Gray a kolejne wyrazy różnią się między sobą wartością tylko jednego bitu. Jest również kodem cyklicznym, bowiem ostatni i pierwszy wyraz tego kodu także spełniają tę zasadę. Przy konwersji z i na kod Gray a wykorzystuje się operację sumy modulo 2, której tablica prawdy została przedstawiona w tabeli 2. Metoda zamiany liczby binarnej na kod Gray a jest następująca: Najbardziej znaczący bit (MSB - ang. most significant bit) w kodzie Gray a jest pobierany bezpośrednio z MSB liczby binarnej. Reszta bitów w kodzie Gray a jest wynikiem operacji XOR (suma modulo 2, oznaczana symbolem 2
Tabela 2: Tablica prawdy dla alternatywy wykluczającej (sumy modulo 2) p q p q ) pomiędzy poprzednim bitem binarnym (b(i-)) i bitem liczby binarnej na tej samej pozycji (b(i)). W przypadku przedstawionym na rysunku mamy: g() = b() g(2) = b() b(2) g(3) = b(2) b(3) g(4) = b(3) b(4) g(5) = b(4) b(5) Rysunek : Zamiana liczby binarnej na kod Gray a Metoda zamiany liczby w kodzie Gray a na liczbę binarną jest następująca: Najbardziej znaczący bit (MSB) liczby binarnej jest pobierany bezpośrednio z MSB w kodzie Gray a. Reszta bitów liczby binarnej jest wynikiem operacji XOR pomiędzy poprzednim bitem binarnym (b(i-)) i bitem w kodzie Gray a na tej samej pozycji (g(i)). W przypadku przedstawionym na rysunku 2 mamy: b() = g() 3
b(2) = b() g(2) b(3) = b(2) g(3) b(4) = b(3) g(4) b(5) = b(4) g(5) Rysunek 2: Zamiana liczby w kodzie Gray a na liczbę binarną Tabela 3: Tabela kodów Gray a Lp. Kod binarny Kod Gray a 2 3 4 5 6 7 8 9 2 3 4 5 4
.4 Kodowanie znaków Cyfrowy system komputerowy operuje tylko zerami i jedynkami. Aby umożliwić wprowadzanie do komputera takich informacji jak słowa i liczby, konieczne jest zastosowanie kodu, który każdemu znakowi przyporządkowuje określoną kombinację zer i jedynek. Obecnie istotne znaczenie ma kod ASCII (czyt. aski; ang. American Standard Code for Information Interchange). Jest to 7-bitowy kod przyporządkowujący liczby z zakresu -27: literom alfabetu angielskiego, cyfrom, znakom przestankowym i innym symbolom oraz poleceniom sterującym. Na przykład mała litera a jest kodowana jako liczba 97, a znak spacji jest kodowany jako 32 (zob. tabelę na końcu dokumentu). Ze względu na ograniczenie kodu ASCII do 28 znaków i faktu, że większość komputerów operuje na 8-bitowych bajtach, dodatkowy bit można wykorzystać na powiększenie zbioru kodowanych znaków do 256 symboli. Powstało wiele różnych rozszerzeń ASCII wykorzystujących ósmy bit (np. norma ISO 8859, rozszerzenia firm IBM lub Microsoft) nazywanych stronami kodowymi. Przed rozpowszechnieniem kodowań opartych na zestawie Unicode, najpopularniejszymi standardami kodowania polskich znaków były ISO 8859-2 (np. dla stron internetowych) i Windows-25 (w systemie Windows). Tabelę z kodowanie polskich znaków w różnych standardach można znaleźć pod adresem: https://pl.wikipedia.org/wiki/kodowanie_polskich_znak%c3%b3w Więcej informacji można znaleźć w książce Barczak A., Florek J., Sydoruk T.: Elektroniczne techniki cyfrowe, Wyd.: VIZJA PRESS&IT Sp. z o.o, Warszawa 26 (Rozdział 2 dostępny pod adresem: http://mirek.ii.uph.edu.pl/ask/files/rozdz2.pdf) 5
2 Zadania 2. Kod NKB, BCD i Gray a 2.. Przedstaw w kodzie NKB, BCD i Gray a:. 45 2. 456 3. 2 2..2 Przedstaw w kodzie NKB, poniższe liczby w kodzie Gray a:. (Gray) 2. (Gray) 3. (Gray) 2..3 Jaką wartość dziesiętną mają następujące liczby w kodzie BCD:. (BCD) 2. (BCD) 3. (BCD) 2..4 Oblicz iloma bitami można przedstawić liczbę dziesiętną 356:. w kodzie NKB 2. w kodzie BCD 2.2 Kodowanie znaków 2.2. Przedstaw tekst w postaci kodu ASCII (do kodowania polskich liter wykorzystaj ISO 8859-2 i Windows-25):. "Gżegżółka" 6
2. "Śledź" 3. swoje nazwisko 7
ASCII CONTROL CODE CHART b7 b6 BITS b5 b4 b3 b2 b CONTROL NUL SOH 2 STX 2 2 3 ETX 3 3 4 EOT 4 4 5 ENQ 5 5 6 ACK 6 6 7 BEL 7 7 8 BS 8 9 HT 9 LF A 2 VT B 3 2 FF C 4 3 CR D 5 4 SO E 6 5 SI F 7 6 DLE 2 7 DC 2 8 DC2 2 22 9 DC3 3 23 2 DC4 4 24 2 NAK 5 25 22 SYN 6 26 23 ETB 7 27 24 CAN 8 3 25 EM 9 3 26 SUB A 32 27 ESC B 33 28 FS C 34 29 GS D 35 3 RS E 36 3 US F 37 LEGEND: SYMBOLS NUMBERS 32 SP 2 4 33! 2 4 34 22 42 35 # 23 43 36 $ 24 44 37 % 25 45 38 & 26 46 39 27 47 4 ( 28 5 4 ) 29 5 42 * 2A 52 43 + 2B 53 44, 2C 54 45 2D 55 46. 2E 56 47 / 2F 57 dec CHAR hex oct 48 3 6 49 3 6 5 2 32 62 5 3 33 63 52 4 34 64 53 5 35 65 54 6 36 66 55 7 37 67 56 8 38 7 57 9 39 7 58 : 3A 72 59 ; 3B 73 6 < 3C 74 6 = 3D 75 62 > 3E 76 63? 3F 77 UPPER CASE 64 @ 4 65 A 4 66 B 42 2 67 C 43 3 68 D 44 4 69 E 45 5 7 F 46 6 7 G 47 7 72 H 48 73 I 49 74 J 4A 2 75 K 4B 3 76 L 4C 4 77 M 4D 5 78 N 4E 6 79 O 4F 7 8 P 5 2 8 Q 5 2 82 R 52 22 83 S 53 23 84 T 54 24 85 U 55 25 86 V 56 26 87 W 57 27 88 X 58 3 89 Y 59 3 9 Z 5A 32 9 [ 5B 33 92 \ 5C 34 93 ] 5D 35 94 ˆ 5E 36 95 5F 37 LOWER CASE 96 6 4 97 a 6 4 98 b 62 42 99 c 63 43 d 64 44 e 65 45 2 f 66 46 3 g 67 47 4 h 68 5 5 i 69 5 6 j 6A 52 7 k 6B 53 8 l 6C 54 9 m 6D 55 n 6E 56 o 6F 57 2 p 7 6 3 q 7 6 4 r 72 62 5 s 73 63 6 t 74 64 7 u 75 65 8 v 76 66 9 w 77 67 2 x 78 7 2 y 79 7 22 z 7A 72 23 { 7B 73 24 7C 74 25 } 7D 75 26 7E 76 27 DEL 7F 77 Victor Eijkhout Dept. of Comp. Sci. University of Tennessee Knoxville TN 37996, USA