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

Podobne dokumenty