METODY WERYFIKACJI POPRAWNOŚCI KODOWANIA Algorytm
Transkrypt
METODY WERYFIKACJI POPRAWNOŚCI KODOWANIA Algorytm
Podstawy Informatyki – EiT, zajęcia 2 08.10.2015 r. METODY WERYFIKACJI POPRAWNOŚCI KODOWANIA Algorytm CRC n-bitowy cykliczny kod nadmiarowy (n-bitowy CRC) definiuje się jako resztę z dzielenia ciągu danych przez (n+1)-bitowy dzielnik CRC, zwany również wielomianem CRC. Przykład Załóżmy n = 3. Ustalmy (n+1)-bitowy dzielnik w postaci liczby Weźmy 1011. 14-bitowy ciąg danych: 11010011101110. Algorytm postępowania w celu obliczenia 3-bitowego CRC jest następujący: 1. dodajemy do ciągu danych 3 wyzerowane bity, 2. w linii poniżej wpisujemy 4-bitowy dzielnik CRC, 3. jeżeli mamy 0 nad najstarszą pozycją dzielnika, to przesuwamy dzielnik w prawo o jedną pozycję, aż do napotkania 1, 4. wykonujemy operację XOR pomiędzy bitami dzielnika i odpowiednimi bitami ciągu danych, uwzględniając dopisane 3 bity 5. wynik zapisujemy w nowej linii poniżej, 6. jeżeli liczba bitów danych jest większa lub równa 4, przechodzimy do kroku 2, 7. 3 najmłodsze bity stanowią szukane CRC, czyli cykliczny kod nadmiarowy: 11010011101110 000 1011 01100011101110 000 1011 00111011101110 000 1011 00010111101110 000 1011 00000001101110 000 1011 00000000110110 000 1011 00000000011010 000 1011 00000000001100 000 1011 00000000000111 000 101 1 00000000000010 100 10 11 -----------------00000000000000 010 <--- 14 bitów danych + 3 wyzerowane bity <--- 4-bitowy dzielnik CRC <--- wynik operacji XOR Tablica prawdy dla alternatywy wykluczającej (XOR) 0 0 1 1 0 1 0 1 0 1 1 0 <--- CRC 1 Podstawy Informatyki – EiT, zajęcia 2 08.10.2015 r. Po stronie odbiorczej wykonywane jest sprawdzenie poprawności otrzymanych danych, przy wykorzystaniu, utworzonego po stronie nadawczej, kodu nadmiarowego CRC. Jeżeli w przesłanych danych nie ma przekłamań, to po wykonaniu powyższej procedury reszta z dzielenia przez dany dzielnik CRC wynosi 0: 11010011101110 010 1011 01100011101110 010 1011 00111011101110 010 1011 00010111101110 010 1011 00000001101110 010 1011 00000000110110 010 1011 00000000011010 010 1011 00000000001100 010 1011 00000000000111 010 101 1 00000000000010 110 10 11 -----------------00000000000000 000 <--- przesłany bez przekłamań ciąg 14 bitów danych + CRC <--- ustalony uprzednio, 4-bitowy dzielnik <--- wynik operacji XOR <--- wynik operacji równy 0 oznacza poprawną transmisję Zadanie: Wyślij ciąg danych: 1001101. Wygeneruj trzybitowy kod CRC . Sprawdź kod CRC po stronie odbiorcy. a) Dane: 1001101 Dzielnik: 1101 b) Dane: 100101110110 Dzielnik: 1101 Zastosowanie CRC: - do wykrywania błędów przypadkowych, powstających podczas transmisji danych cyfrowych przez łącza telekomunikacyjne, - dodawany jest do danych każdego sektora dysku lub pakietu telekomunikacyjnego w celu ciągłego sprawdzania integralności danych. Inne metody to np. MD5, SHA-1, ADLER-32. 2 Podstawy Informatyki – EiT, zajęcia 2 08.10.2015 r. Wprowadzenie znaków kontrolnych przy kodowaniu danych PESEL (cyfra kontrolna) Przykład: 440514 0145 8 cyfry [1-6] – data urodzenia z określeniem stulecia urodzenia cyfry [7-10] – numer serii z oznaczeniem płci, cyfra [10] – płeć cyfra [11] – cyfra kontrolna Zadanie: Sprawdź cyfrę kontrolną swojego numeru PESEL wg podanego wyżej algorytmu. 3 Podstawy Informatyki – EiT, zajęcia 2 08.10.2015 r. Kodowanie liczb wymiernych Definicja formatu zmiennoprzecinkowego - cecha i mantysa Niech słowo kodowe FP będzie zbudowane z 8 bitów ponumerowanych od 0 do 7, które podzielimy na dwie części: Słowo kodowe FP b7 b6 b5 b4 c - cecha b3 b2 b1 b0 m - mantysa Cecha zawarta będzie w bitach od b4 do b7. Ustalmy, iż cecha jest liczbą całkowitą ze znakiem w kodzie U2. (Uwaga - ten sposób kodowania przyjęliśmy dla prostoty - rzeczywiste systemy zmiennoprzecinkowe stosują tutaj kodowanie z nadmiarem). Wartość cechy obliczamy wg wzoru: c = (-23) ∙ b7 + 22 ∙ b6 + 21 ∙ b5+ 20 ∙ b4 = (-8) ∙ b7 + 4 ∙ b6 + 2 ∙ b5 + b4 Przykład: W słowie kodowym 10111101(FP) cecha ma wartość c= 1011(U2) = -8 + 2 + 1 = -5(10). Mantysa zawarta jest w bitach od b0 do b3. Ustalamy, iż mantysa jest 4-bitową liczbą stałoprzecinkową w kodzie U2 (rzeczywiste systemy stosują kodowanie mantysy w stałoprzecinkowym kodzie ZM – Znak Moduł) Pozycję przecinka umieszczamy pomiędzy bitami b1 i b2 (jest to tylko taka nasza umowa, w rzeczywistości przecinek nie jest umieszczany w zapisie liczby, ale my wiemy, gdzie on powinien być i o to właśnie chodzi!) Zatem wartość mantysy obliczamy według wzoru: m = b3b2 , b1b0(U2) = = (-21) ∙ b3 + 20 ∙ b2+ 2-1 ∙ b1+ 2-2 ∙ b0 = -2b3 + b2 + 1/2b1 + 1/4b2 4 Podstawy Informatyki – EiT, zajęcia 2 08.10.2015 r. Czyli: W słowie kodowym 10111101(FP) mantysa ma wartość m =11,01(U2) = -2 + 1 + 1/4 = -3/4(10). Obliczanie wartości liczby zmiennoprzecinkowej Znając sposób kodowania cechy i mantysy można już obliczyć wartość dowolnej liczby zapisanej w tym systemie zmiennoprzecinkowym. L(FP) = m ∙ 2c Zadanie 1: Obliczyć wartość liczby zmiennoprzecinkowej 00010100(FP). c = ………….(U2) ……..(U2) = …………………..(10) m = …..…,…....(U2) ..…..,…….(U2) = ……………………...(10) L(FP)=m ∙ 2c =……………………………. wynik: 00010100(FP) = ……………. Zadanie 2: Obliczyć wartość liczby zmiennoprzecinkowej 11010111(FP). c = …………..(U2) ……….(U2) = …………………….(10) m = …….,......(U2) ………,………(U2) = ……………………………….(10) L(FP)=m ∙ 2c =……………………………………. wynik: 11010111(FP) = ………………. 5 Podstawy Informatyki – EiT, zajęcia 2 08.10.2015 r. Zadanie 3: Obliczyć wartość liczby zmiennoprzecinkowej 11111001(FP). c = ……..(U2) 1111(U2) = ………………………… (10) m =……….,………(U2) 10,01(U2) = ………………………….(10) L(FP)=m ∙ 2c =……………………………………….. wynik: 11111001(FP) = …………… KOD „ZNAK MODUŁ” Kod znak-moduł to sposób zapisu liczb całkowitych oznaczany jako ZM (bądź SM – ang. signmagnitude). Wszystkie bity poza najstarszym mają takie same znaczenie jak w naturalnym kodzie binarnym. Wyróżniony bit w tym zapisie jest bitem znaku. Jeżeli ma on wartość 0 to dana liczba jest nieujemna, jeżeli 1, to liczba jest niedodatnia. W związku z tym występują dwie reprezentacje zera: +0 (0000) i -0 (1000) – patrz tabela. Jednocześnie wpływa to na zakres liczb jaki można przedstawić używając kodowania ZM na n bitach: Dla 8 bitów (bajta) są to liczby od -127 do 127. Liczby zapisane w kodzie ZM na 4 bitach: znak-moduł dziesiętnie 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 0 1001 -1 1010 -2 1011 -3 1100 -4 1101 -5 1110 -6 1111 -7 6 Podstawy Informatyki – EiT, zajęcia 2 08.10.2015 r. KOD „Z NADMIAREM” Jest to jeszcze inny sposób zapisu liczb całkowitych. Wartość dziesiętna liczby zapisanej w dwójkowym kodzie z nadmiarem: bN-1bN-2...b2b1b0 (BIAS) = bN-12N-1 + bN-22N-2 + ... + b222 + b121 + b020 - bias gdzie: b - bit, cyfra dwójkowa 0 lub 1 N - liczba bitów w zapisie liczby bias - nadmiar, odchyłka w stosunku do naturalnych wartości słów kodowych Przykład: Dla kodu z nadmiarem bias = 129(10) oblicz wartość słowa kodowego 11111111(BIAS=129). 11111111(BIAS=129) = 27 + 26 + 25 + 24 + 23 + 22 + 21 + 20 - 129 11111111(BIAS=129) = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 - 129 11111111(BIAS=129) = 255 - 129 11111111(BIAS=129) = 126(10). Zadanie: Dla kodu z nadmiarem bias = 63(10) oblicz wartość słowa kodowego 00011111(BIAS=63). 00011111(BIAS=63) = …………………………………………………………….. 00011111(BIAS=63) = …………………………………………………………….. 00011111(BIAS=63) = …………………….. 00011111(BIAS=63) = …………(10). 7