Cyfrowy zapis informacji
Kody liczbowe
Kody alfanumeryczne
Kody liczbowe stosuje się do zapisu informacji liczbowych. Jeżeli informacje obejmują nie tylko liczby, lecz także litery i odpowiednie znaki sterujące, to kod stosowany do zapisu takich informacji tekstowych nazywa się alfanumerycznym.
Do wykrywania (detekcji) i ewentualnego poprawiania (korekcji) błędów, które mogą powstać przy przesyłaniu lub podczas przechowywania informacji kodowanych cyfrowo, służą odpowiednie kody zabezpieczające przed błędami. Są to specjalne kody nadmiarowe.
Naturalny kod binarny
Reprezentacja LB A = (an-1,...,a0)
za pomocą liczby LD L(A)
Dla liczb ułamkowych:
Nieujemna liczba ułamkowa przedstawiona w NKB słowem binarnym A = (a-1, a-2,... aj... a-m.+1, a-m) jest równa
L =
Na przykład, jeśli liczba binarna 1011 reprezentuje liczbę ułamkową 0.1011, to jej reprezentacja dziesiętna będzie
1 × 2-1 + 0 × 2-2 + 1 × 2-3+ 1 × 2-4 = 0.687510
Przy występowaniu części całkowitej stosuje się oba wzory
Na przykład liczba binarna 1011.1011 oznacza 11.687510Kod ósemkowy i szesnastkowy
(oktalny i heksadecymalny)
Dla ułatwienia czytania i rozróżniania wektorów binarnych koduje się je w postaci liczb a) ósemkowych lub b) szesnastkowych.
W tym celu liczbę binarną dzieli się na grupy
a) po trzy bity, a trójki zastępuje się cyframi 0,...,7.
Np.: 1101000
001 101 000 czyli 1508
b) po cztery bity, a czwórki zastępuje się cyframi 0,...,9 oraz literami A, B, C, D, E, F.
Np.: 0111010010
0001 1101 0010 czyli 1D216
Kod dwójkowo dziesiętny
(tzw. BCD - Binary Coded Decimal) przyporządkowuje cyfrom dziesiętnym 0 do 9 4-bitowe wektory binarne (tzw. tetrady).
27510 = 0010 0111 0101BCD
Przykłady
Kod dziesiętny
D
|
Kod binarny
NKB
|
Kod oktalny
O
|
Kod heksadecy-malny H
|
excess 3 |
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
|
0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17
|
0 1 2 3 4 5 6 7 8 9 A B C D E F
|
0011 0100 0101 0110 0111 1000 1001 1010 1011 1100
|
I
Kody dla liczb ze znakiem
znak-moduł (ZM)
znak-uzupełnienie do 1 (U1)
znak-uzupełnienie do 2 (U2)
ZM składa się z bitu znaku, po którym następuje kropka, oraz z bitów znaczących określających wartość bezwzględną liczby, czyli jej moduł.
+12 → 0.1100
-12 → 1.1100
W kodzie U1 reprezentacja liczby dodatniej jest identyczna jak w ZM. Liczba ujemna jest reprezentowana przez bit znaku równy 1 i przez tzw. uzupełnienie do jedności (czyli negacja słowa B).
+12 → 0.1100
-12 → 1.0011
Porównując to z kodem U2 (-B = + 1)
U2(B) = + 1
U2(B) = U1(B) + 1
-12 → 1.0100
Kody alfanumeryczne
Do reprezentacji cyfr, liter i pewnych znaków specjalnych stosowane są kody zwane alfanumerycznymi.
ISO-7 jest kodem 7-bitowym, obejmującym 128 znaków.
Amerykańską wersją kodu ISO jest kod ASCII (American Standard Code for Information Interchange).
Pierwsze 32 znaki kodów ISO oraz ASCII są znakami sterującymi:
a) transmisją informacji,
układem tekstu,
c) pracą urządzeń wejścia/wyjścia,
d) separatory informacji.
Kody zabezpieczające przed błędami
Kody detekcyjne - służące wyłącznie do wykrywania błędów,
Kody korekcyjne - umożliwiające nie tylko wykrywanie, ale również korygowanie błędów.
Istotnym parametrem kodu jest odległość Hamminga. Jest to liczba pozycji, na których różnią się dwa ciągi kodowe. Minimalna odległość (ozn. δ) między ciągami kodowymi danego kodu decyduje o jego własnościach kontrolnych. Przykładem kodu z δ = 2 jest kod „2 z 5”.
Najczęściej stosowanym kodem z δ = 2, umożliwiającym wykrywanie błędów jest kod z kontrolą parzystości. W kodzie tym ciąg kodowy uzupełnia się dodatkowym bitem parzystości, który jest dobrany tak, aby waga każdego takiego złożonego ciągu była parzysta.
Liczba dziesiętna |
kod z δ = 1
|
kody z δ = 2 |
|
|
a2a1a0
|
a2a1a0p |
a2a1a0n |
0 |
000 |
0000 |
0001 |
1 |
001 |
0011 |
0010 |
2 |
010 |
0101 |
0100 |
3 |
011 |
0110 |
0111 |
4 |
100 |
1001 |
1000 |
5 |
101 |
1010 |
1011 |
6 |
110 |
1100 |
1101 |
7 |
111 |
1111 |
1110 |