METODY WERYFIKACJI POPRAWNOŚCI KODOWANIA Algorytm CRC
Pracownia nr 3
Pracownia nr 3
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Podstawy Informatyki – EiT, zajęcia 2 08.10.2015 r.<br />
<strong>METODY</strong> <strong>WERYFIKACJI</strong> <strong>POPRAWNOŚCI</strong><br />
<strong>KODOWANIA</strong><br />
<strong>Algorytm</strong> <strong>CRC</strong><br />
n-bitowy cykliczny kod nadmiarowy (n-bitowy <strong>CRC</strong>) definiuje się jako resztę z dzielenia ciągu<br />
danych przez (n+1)-bitowy dzielnik <strong>CRC</strong>, zwany również wielomianem <strong>CRC</strong>.<br />
Przykład<br />
Załóżmy n = 3.<br />
Ustalmy (n+1)-bitowy dzielnik w postaci liczby 1011.<br />
Weźmy 14-bitowy ciąg danych: 11010011101110.<br />
<strong>Algorytm</strong> postępowania w celu obliczenia 3-bitowego <strong>CRC</strong> jest następujący:<br />
1. dodajemy do ciągu danych 3 wyzerowane bity,<br />
2. w linii poniżej wpisujemy 4-bitowy dzielnik <strong>CRC</strong>,<br />
3. jeżeli mamy 0 nad najstarszą pozycją dzielnika, to przesuwamy dzielnik w prawo o<br />
jedną pozycję, aż do napotkania 1,<br />
4. wykonujemy operację XOR pomiędzy bitami dzielnika i odpowiednimi bitami ciągu<br />
danych, uwzględniając dopisane 3 bity<br />
5. wynik zapisujemy w nowej linii poniżej,<br />
6. jeżeli liczba bitów danych jest większa lub równa 4, przechodzimy do kroku 2,<br />
7. 3 najmłodsze bity stanowią szukane <strong>CRC</strong>, czyli cykliczny kod nadmiarowy:<br />
11010011101110 000
Podstawy Informatyki – EiT, zajęcia 2 08.10.2015 r.<br />
Po stronie odbiorczej wykonywane jest sprawdzenie poprawności otrzymanych<br />
danych, przy wykorzystaniu, utworzonego po stronie nadawczej, kodu<br />
nadmiarowego <strong>CRC</strong>. Jeżeli w przesłanych danych nie ma przekłamań, to po<br />
wykonaniu powyższej procedury reszta z dzielenia przez dany dzielnik <strong>CRC</strong><br />
wynosi 0:<br />
11010011101110 010
Podstawy Informatyki – EiT, zajęcia 2 08.10.2015 r.<br />
Wprowadzenie znaków kontrolnych przy<br />
kodowaniu danych<br />
PESEL (cyfra kontrolna)<br />
Przykład:<br />
440514 0145 8<br />
<br />
<br />
<br />
cyfry [1-6] – data urodzenia z określeniem stulecia urodzenia<br />
cyfry [7-10] – numer serii z oznaczeniem płci, cyfra [10] – płeć<br />
cyfra [11] – cyfra kontrolna<br />
Zadanie:<br />
Sprawdź cyfrę kontrolną swojego numeru PESEL wg podanego wyżej<br />
algorytmu.<br />
3
Podstawy Informatyki – EiT, zajęcia 2 08.10.2015 r.<br />
Kodowanie liczb wymiernych<br />
Definicja formatu zmiennoprzecinkowego - cecha i mantysa<br />
Niech słowo kodowe FP będzie zbudowane z 8 bitów ponumerowanych od 0 do 7, które<br />
podzielimy na dwie części:<br />
Słowo kodowe FP<br />
b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0<br />
c - cecha<br />
m - mantysa<br />
Cecha zawarta będzie w bitach od b 4 do b 7 . Ustalmy, iż cecha jest liczbą całkowitą ze<br />
znakiem w kodzie U2.<br />
(Uwaga - ten sposób kodowania przyjęliśmy dla prostoty - rzeczywiste systemy<br />
zmiennoprzecinkowe stosują tutaj kodowanie z nadmiarem).<br />
Wartość cechy obliczamy wg wzoru:<br />
c = (-2 3 ) ∙ b 7 + 2 2 ∙ b 6 + 2 1 ∙ b 5 + 2 0 ∙ b 4 = (-8) ∙ b 7 + 4 ∙ b 6 + 2 ∙ b 5 + b 4<br />
Przykład:<br />
W słowie kodowym 10111101( FP ) cecha ma wartość c= 1011( U2 ) = -8 + 2 + 1 = -5( 10 ).<br />
Mantysa zawarta jest w bitach od b 0 do b 3 . Ustalamy, iż mantysa jest 4-bitową liczbą<br />
stałoprzecinkową w kodzie U2 (rzeczywiste systemy stosują kodowanie mantysy w<br />
stałoprzecinkowym kodzie ZM – Znak Moduł) Pozycję przecinka umieszczamy pomiędzy<br />
bitami b 1 i b 2 (jest to tylko taka nasza umowa, w rzeczywistości przecinek nie jest<br />
umieszczany w zapisie liczby, ale my wiemy, gdzie on powinien być i o to właśnie chodzi!)<br />
Zatem wartość mantysy obliczamy według wzoru:<br />
m = b 3 b 2 , b 1 b 0(U2) =<br />
= (-2 1 ) ∙ b 3 + 2 0 ∙ b 2 + 2 -1 ∙ b 1 + 2 -2 ∙ b 0 = -2b 3 + b 2 + 1 / 2 b 1 + 1 / 4 b 2<br />
4
Podstawy Informatyki – EiT, zajęcia 2 08.10.2015 r.<br />
Czyli:<br />
W słowie kodowym 10111101 (FP) mantysa ma wartość<br />
m =11,01 (U2) = -2 + 1 + 1 / 4 = - 3 / 4(10) .<br />
Obliczanie wartości liczby zmiennoprzecinkowej<br />
Znając sposób kodowania cechy i mantysy można już obliczyć wartość dowolnej liczby<br />
zapisanej w tym systemie zmiennoprzecinkowym.<br />
Zadanie 1:<br />
L (FP) = m ∙ 2 c<br />
Obliczyć wartość liczby zmiennoprzecinkowej 00010100 (FP) .<br />
c = …………. (U2)<br />
…….. (U2) = ………………….. (10)<br />
m = …..…,….... (U2)<br />
..…..,……. (U2) = ……………………... (10)<br />
L (FP) =m ∙ 2 c =…………………………….<br />
wynik: 00010100 (FP) = …………….<br />
Zadanie 2:<br />
Obliczyć wartość liczby zmiennoprzecinkowej 11010111 (FP) .<br />
c = ………….. (U2)<br />
………. (U2) = ……………………. (10)<br />
m = …….,...... (U2)<br />
………,……… (U2) = ………………………………. (10)<br />
L (FP) =m ∙ 2 c =…………………………………….<br />
wynik: 11010111 (FP) = ……………….<br />
5
Podstawy Informatyki – EiT, zajęcia 2 08.10.2015 r.<br />
Zadanie 3:<br />
Obliczyć wartość liczby zmiennoprzecinkowej 11111001 (FP) .<br />
c = …….. (U2)<br />
1111 (U2) = ………………………… (10)<br />
L (FP) =m ∙ 2 c<br />
m =……….,……… (U2)<br />
10,01 (U2) = …………………………. (10)<br />
=………………………………………..<br />
wynik: 11111001 (FP) = ……………<br />
KOD „ZNAK MODUŁ”<br />
Kod znak-moduł to sposób zapisu liczb całkowitych oznaczany jako ZM (bądź SM – ang. signmagnitude).<br />
Wszystkie bity poza najstarszym mają takie same znaczenie jak w naturalnym<br />
kodzie binarnym. Wyróżniony bit w tym zapisie jest bitem znaku. Jeżeli ma on wartość 0 to<br />
dana liczba jest nieujemna, jeżeli 1, to liczba jest niedodatnia. W związku z tym występują<br />
dwie reprezentacje zera: +0 (0000) i -0 (1000) – patrz tabela. Jednocześnie wpływa to na<br />
zakres liczb jaki można przedstawić używając kodowania ZM na n bitach:<br />
Dla 8 bitów (bajta) są to liczby od -127 do 127. Liczby zapisane w kodzie ZM na 4 bitach:<br />
znak-moduł dziesiętnie<br />
0000 0<br />
0001 1<br />
0010 2<br />
0011 3<br />
0100 4<br />
0101 5<br />
0110 6<br />
0111 7<br />
1000 0<br />
1001 -1<br />
1010 -2<br />
1011 -3<br />
1100 -4<br />
1101 -5<br />
1110 -6<br />
1111 -7<br />
6
Podstawy Informatyki – EiT, zajęcia 2 08.10.2015 r.<br />
KOD „Z NADMIAREM”<br />
Jest to jeszcze inny sposób zapisu liczb całkowitych.<br />
Wartość dziesiętna liczby zapisanej w dwójkowym kodzie z nadmiarem:<br />
b N-1 b N-2 ...b 2 b 1 b 0 (BIAS) = b N-1 2 N-1 + b N-2 2 N-2 + ... + b 2 2 2 + b 1 2 1 + b 0 2 0 - bias<br />
gdzie:<br />
b - bit, cyfra dwójkowa 0 lub 1<br />
N - liczba bitów w zapisie liczby<br />
bias - nadmiar, odchyłka w stosunku do naturalnych wartości słów kodowych<br />
Przykład:<br />
Dla kodu z nadmiarem bias = 129 (10) oblicz wartość słowa kodowego<br />
11111111 (BIAS=129) .<br />
11111111 (BIAS=129) = 2 7 + 2 6 + 2 5 + 2 4 + 2 3 + 2 2 + 2 1 + 2 0 - 129<br />
11111111 (BIAS=129) = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 - 129<br />
11111111 (BIAS=129) = 255 - 129<br />
11111111 (BIAS=129) = 126 (10) .<br />
Zadanie:<br />
Dla kodu z nadmiarem bias = 63 (10) oblicz wartość słowa kodowego<br />
00011111 (BIAS=63) .<br />
00011111 (BIAS=63) = ……………………………………………………………..<br />
00011111 (BIAS=63) = ……………………………………………………………..<br />
00011111 (BIAS=63) = ……………………..<br />
00011111 (BIAS=63) = ………… (10) .<br />
7