• Nie Znaleziono Wyników

Kod Hamminga

N/A
N/A
Protected

Academic year: 2021

Share "Kod Hamminga"

Copied!
20
0
0

Pełen tekst

(1)

Kod Hamminga

Podstawy Telekomunikacji

Autor: Paweł Zajdel

Damian Sitarek

Kamil Cisek

(2)

Zadanie 1

Proszę zakodować następujące ciągi 5-cio bitowe:

a) 11010 b) 01011 c) 10001 d) 11110 e) 10101

a)

Bity nadmiarowe występują na pozycjach będących potęgami liczby 2 tj. 1,2,4,8,16 … Pozycje numerujemy od lewej do prawej.

Dany ciąg uzupełniamy o miejsca na których wystąpią bity nadmiarowe __1_101_0

Przykładowe numerowanie pozycji: pozycja 1 pozycja 7 Algorytm sprawdzania bitów:

Obliczając bit na i-tej pozycji sprawdzamy i-1 bitów (następujących po bicie na i-tej pozycji), następnie opuszczamy i bitów, sprawdzamy i bitów, opuszczamy i bitów itd.

(3)

Zadanie 1 c.d.

a) Obliczamy kod nadmiarowy dla wiadomości x=11010. Zapisujemy najpierw to słowo zostawiając miejsce na bity nadmiarowe: __1_101_0.

Obliczamy x1: __1_101_0  x1=1 Obliczamy x2: 1_1_101_0  x2=0 Obliczamy x4: 101_101_0  x4=0 Obliczamy x8: 1010101_0  x8=0 Odpowiedź: 101010100

b) x=01011. Zapisujemy najpierw to słowo zostawiając miejsce na bity nadmiarowe: __0_101_1.

Obliczamy x1: __0_101_1  x1=1 Obliczamy x2: 1_0_101_1  x2=1 Obliczamy x4: 110_101_1  x4=0 Obliczamy x8: 1100101_1  x8=1 Odpowiedź: 110010111

(4)

Zadanie 1 c.d.

c) x=10001. Zapisujemy to słowo zostawiając miejsce na bity nadmiarowe: __1_000_1.

Obliczamy x1: __1_000_1  x1=0 Obliczamy x2: 0_1_000_1  x2=1 Obliczamy x4: 011_000_1  x4=0 Obliczamy x8: 0110000_1  x8=1 Odpowiedź: 011000011

d) x=11110. Zapisujemy to słowo zostawiając miejsce na bity nadmiarowe: __1_111_0.

Obliczamy x1: __1_111_0  x1=1 Obliczamy x2: 1_1_111_0  x2=1 Obliczamy x4: 111_111_0  x4=1 Obliczamy x8: 1111111_0  x8=0 Odpowiedź: 111111100

e) x=10101. Zapisujemy to słowo zostawiając miejsce na bity nadmiarowe: __1_010_1.

Obliczamy x1: __1_010_1  x1=0 Obliczamy x2: 0_1_010_1  x2=0 Obliczamy x4: 001_010_1  x4=1 Obliczamy x8: 0011010_1  x8=1 Odpowiedź: 001101011

(5)

Zadanie 2

Proszę zakodować następujące ciągi 8-bitowe:

a) 10110100 b) 11010001 c) 11101011 d) 00110111 e) 01101100

a) x=10110100. Zapisujemy słowo zostawiając miejsce na bity nadmiarowe: __1_011_0100 Obliczamy x1: __1_011_0100  x1=0

Obliczamy x2: 0_1_011_0100  x2=0 Obliczamy x4: 001_011_0100  x4=0 Obliczamy x8: 0010011_0100 x8=1 Odpowiedź: 001001110100

b) x=11010001. Zapisujemy słowo zostawiając miejsce na bity nadmiarowe: __1_101_0001 Obliczamy x1: __1_101_0001  x1=1

Obliczamy x2: 1_1_101_0001  x2=0 Obliczamy x4: 101_101_0001  x4=1 Obliczamy x8: 1011101_0001 x8=1 Odpowiedź: 101110110001

(6)

Zadanie 2 c.d.

c) x=11101011. Zapisujemy słowo zostawiając miejsce na bity nadmiarowe: __1_110_1011 Obliczamy x1: __1_110_1011  x1=0

Obliczamy x2: 0_1_110_1011  x2=1 Obliczamy x4: 011_110_1011  x4=1 Obliczamy x8: 0111110_1011 x8=1 Odpowiedź: 011111011011

e) x=00110111. Zapisujemy słowo zostawiając miejsce na bity nadmiarowe: __0_011_0111 Obliczamy x1: __0_011_0111  x1=0

Obliczamy x2: 0_0_011_0111  x2=0 Obliczamy x4: 000_011_0111  x4=1 Obliczamy x8: 0001011_0111 x8=1 Odpowiedź: 000101110111

f) x=01101100. Zapisujemy słowo zostawiając miejsce na bity nadmiarowe: __0_110_1100 Obliczamy x1: __0_110_1100  x1=0

Obliczamy x2: 0_0_110_1100  x2=0 Obliczamy x4: 000_110_1100  x4=0 Obliczamy x8: 0000110_1100 x8=0 Odpowiedź: 000011001100

(7)

Zadanie 3

Proszę zakodować następujące ciągi informacyjne w optymalnym kodzie Hamminga:

a) 0110101101101011 b) 1110110110010111 c) 0001000101110101 d) 1111111111111111 e) 0000000000000001 f) 0110110110110110

a) x=0110101101101011. Zapisujemy słowo zostawiając miejsce na bity nadmiarowe:

__0_110_1011011_01011

Obliczamy x1: __0_110_1011011_01011  x1=1 Obliczamy x2: 1_0_110_1011011_01011  x2=1 Obliczamy x4: 110_110_1011011_01011  x4=1 Obliczamy x8: 1101110_1011011_01011  x8=1 Obliczamy x16: 110111011011011_01011  x16=1 Odpowiedź: 110111011011011101011

b) x=1110110110010111. Zapisujemy słowo zostawiając miejsce na bity nadmiarowe:

__1_110_1101100_10111

Obliczamy x1: __1_110_1101100_10111  x1=1 Obliczamy x2: 1_1_110_1101100_10111  x2= 0 Obliczamy x4: 101_110_1101100_10111  x4=0 Obliczamy x8: 1010110_1101100_10111  x8=0 Obliczamy x16: 101011001101100_10111  x16=0

(8)

Zadanie 3 c.d.

Odpowiedź: 101011001101100010111

c) x=0001000101110101. Zapisujemy słowo zostawiając miejsce na bity nadmiarowe:

__0_001_0001011_10101

Obliczamy x1: __0_001_0001011_10101  x1=1 Obliczamy x2: 1_0_001_0001011_10101  x2=0 Obliczamy x4: 100_001_0001011_10101  x4=1 Obliczamy x8: 1001001_0001011_10101  x8=1 Obliczamy x16: 100100110001011_10101  x16=1 Odpowiedź: 100100110001011110101

d) x=1111111111111111. Zapisujemy słowo zostawiając miejsce na bity nadmiarowe:

__1_111_1111111_11111

Obliczamy x1: __1_111_1111111_11111  x1=0 Obliczamy x2: 0_1_111_1111111_11111  x2=1 Obliczamy x4: 011_111_1111111_11111  x4=1 Obliczamy x8: 0111111_1111111_11111  x8=1 Obliczamy x16: 011111111111111_11111  x16=1 Odpowiedź: 011111111111111111111

(9)

Zadanie 3 c.d.

e) x=0000000000000001. Zapisujemy słowo zostawiając miejsce na bity nadmiarowe:

__0_000_0000000_00001

Obliczamy x1: __0_000_0000000_00001  x1=1 Obliczamy x2: 1_0_000_0000000_00001  x2=0 Obliczamy x4: 100_000_0000000_00001  x4=1 Obliczamy x8: 1001000_0000000_00001  x8=0 Obliczamy x16: 100100000000000_00001  x16=1 Odpowiedź: 100100000000000100001

f) x=0110110110110110. Zapisujemy słowo zostawiając miejsce na bity nadmiarowe:

__0_110_1101101_10110

Obliczamy x1: __0_110_1101101_10110  x1=0 Obliczamy x2: 0_0_110_1101101_10110  x2=0 Obliczamy x4: 000_110_1101101_10110  x4= 0 Obliczamy x8: 0000110_1101101_10110  x8=1 Obliczamy x16: 000011011101101_10110  x16=1 Odpowiedź: 000011011101101110110

(10)

Zadanie 4

Odebrano następujące ciągi kodowe. Proszę obliczyć syndrom dekodera, określić czy powstał błąd i określić na której pozycji.

c.x.=1010101 c.x.=0010101 c.x.=1010111 c.x.=0011010 c.x.=1101101

Syndrom równy 0 oznaczą że błąd nie wystąpił. Syndrom różny od 0 oznacza powstanie błędu.

Jeżeli wystąpił błąd to kod nadmiarowy błędnej wiadomości który sami obliczymy będzie inny niż ten który odebraliśmy.

c.x.= 1010101

Kod namiarowy (odebrany) y=100

Obliczamy dla bitów informacyjnych bity nadmiarowe.

Obliczamy x1: __1_101  x1=1 Obliczamy x2: 1_1_101  x2=0 Obliczamy x4: 101_101  x4=0 Kod nadmiarowy (obliczony) y’=100

Syndrom y+y’ (dodajemy poszczególne bity i odwracamy kolejność) =(0+0)(0+0) (1+1)=000  Błąd nie wystąpił

(11)

Zadanie 4. c.d.

c.x.=0010101

Kod namiarowy (odebrany) y=000

Obliczamy dla bitów informacyjnych bity nadmiarowe.

Obliczamy x1: __1_101  x1=1 Obliczamy x2: 1_1_101  x2=0 Obliczamy x4: 101_101  x4=0 Kod nadmiarowy (obliczony) y’=100

Syndrom y+y’=(0+0)(0+0)(0+1)=001  Błąd wystąpił Otrzymujemy numer pozycji na której wystąpił błąd tj.:

p=001  błąd na 1 pozycji

c.x.= 1010111

Kod namiarowy (odebrany) y=100

Obliczamy dla bitów informacyjnych bity nadmiarowe.

Obliczamy x1: __1_111  x1=1 Obliczamy x2: 1_1_111  x2=1 Obliczamy x4: 111_111  x4=1 Kod nadmiarowy (obliczony) y’=111

Syndrom y+y’=(0+1)(0+1)(1+1)=110 Błąd wystąpił p=110  błąd na 6 pozycji

(12)

Zadanie 4 c.d.

c.x.= 0011010

Kod namiarowy (odebrany) y=001

Obliczamy dla bitów informacyjnych bity nadmiarowe.

Obliczamy x1: __1_010 x1=1 Obliczamy x2: 1_1_010  x2=0 Obliczamy x4: 101_010  x4=1 Kod nadmiarowy (obliczony) y’=101

Syndrom y+y’=(1+1)(0+0)(0+1)=001 Błąd wystąpił p=001  błąd na 1 pozycji

c.x.= 1101101

Kod namiarowy (odebrany) y=111

Obliczamy dla bitów informacyjnych bity nadmiarowe.

Obliczamy x1: __0_101 x1=0 Obliczamy x2: 0_0_101  x2=1 Obliczamy x4: 010_101  x4=0 Kod nadmiarowy (obliczony) y’=010

Syndrom y+y’=(1+0)(1+1)(1+0)=101 Błąd wystąpił p=101  błąd na 5 pozycji

(13)

Zadanie 5

Odebrano następujące ciągi kodowe. Proszę obliczyć syndrom dekodera, ustalić czy powstał błąd i określić na której pozycji. Proszę podać prawidłowy ciąg

informacyjny.

c.x.=000001110100 c.x.=001011110100 c.x.=001001100100 c.x.=101001010011 c.x.=110010111011

c.x.= 000001110100

Kod namiarowy (odebrany) y=0001 Kod nadmiarowy (obliczony) y’=1101

Syndrom y+y’=(1+1)(0+0)(0+1)(0+1)=0011 Błąd wystąpił p=0011  błąd na 3 pozycji

Poprawny ciąg informacyjny: c.i.=10110100

c.x.= 001011110100

Kod namiarowy (odebrany) y=0001 Kod nadmiarowy (obliczony) y’=1011

Syndrom y+y’=(1+1)(0+1)(0+0)(0+1)=0101 Błąd wystąpił p=0101 błąd na 5 pozycji

Poprawny ciąg informacyjny: c.i.=10110100

(14)

Zadanie 5 c.d.

c.x.= 001001100100

Kod namiarowy (odebrany) y=0000 Kod nadmiarowy (obliczony) y’=0001

Syndrom y+y’=(0+1)(0+0)(0+0)(0+0)=1000 Błąd wystąpił (w kodzie nadmiarowym) p=1000  błąd na 8 pozycji

Poprawny ciąg informacyjny: c.i.=10110100

c.x.= 101001010011

Kod namiarowy (odebrany) y=1001 Kod nadmiarowy (obliczony) y’=0100

Syndrom y+y’=(1+0)(0+0)(0+1)(1+0)=1011 Błąd wystąpił p=1011  błąd na 11 pozycji

Poprawny ciąg informacyjny: c.i.=10100001

c.x.= 110010111011

Kod namiarowy (odebrany) y=1101 Kod nadmiarowy (obliczony) y’=0011

Syndrom y+y’=(1+1)(0+1)(1+0)(1+0)=0111 Błąd wystąpił p=0111 błąd na 7 pozycji

Poprawny ciąg informacyjny: c.i.=01001011

(15)

Zadanie 6

Oblicz czy ciąg odbiorczy jest poprawnym ciągiem kodowym kodu Hamminga (optymalnego), czy też jest błędny; na jakiej pozycji jest błąd; jaki jest ciąg informacyjny.

1010110111 = 00111001100111 = 11001101011100 = 11100101111100 = 01010101011111 =

c.x.= 1010110111

Kod namiarowy (odebrany) y=1001 Kod nadmiarowy (obliczony) y’=1100

Syndrom y+y’=(1+0)(0+0)(0+1)(1+1)=1010 Błąd wystąpił p=1010  błąd na 10 pozycji

Poprawny ciąg informacyjny: c.i.=111010

c.x.= 00111001100111

Kod namiarowy (odebrany) y=0011 Kod nadmiarowy (obliczony) y’=0000

Syndrom y+y’=(1+0)(1+0)(0+0)(0+0)=1100 Błąd wystąpił p=1100  błąd na 12 pozycji

Poprawny ciąg informacyjny: c.i.=1100100011

(16)

Zadanie 6 c.d.

c.x.= 11001101011100

Kod namiarowy (odebrany) y=1101 Kod nadmiarowy (obliczony) y’=0111

Syndrom y+y’=(1+1)(0+1)(1+1)(1+0)=0101 Błąd wystąpił p=0101  błąd na 5 pozycji

Poprawny ciąg informacyjny: c.i.= 0010011100

c.x.= 11100101111100

Kod namiarowy (odebrany) y=1101 Kod nadmiarowy (obliczony) y’=1000

Syndrom y+y’=(1+0)(0+0)(1+0)(1+1)=1010 Błąd wystąpił p=1010  błąd na 10 pozycji

Poprawny ciąg informacyjny: c.i.=1010101100

c.x.= 01010101011111

Kod namiarowy (odebrany) y=0111 Kod nadmiarowy (obliczony) y’=0001

Syndrom y+y’=(1+1)(1+0)(1+0)(0+0)=0110 Błąd wystąpił p=0110 błąd na 6 pozycji

Poprawny ciąg informacyjny: c.i.=0000011111

(17)

Zadanie 7

Oblicz czy ciąg jest kodem Hamminga; jeżeli tak to sprawdź czy jest poprawny. Jaki jest ciąg informacyjny?

c.x.= 011011001011011 (15 bitów) c.x.=1111000100101111 (16 bitów)

c.x.= 011011001011011

Kod namiarowy (odebrany) y=0100 Kod nadmiarowy (obliczony) y’=1111

Syndrom y+y’=(0+1)(0+1)(1+1)(0+1)=1101 Błąd wystąpił p=1101  błąd na 13 pozycji

Poprawny ciąg informacyjny: c.i.= 11101011111 c.x.=1111000100101111

Ciąg ten nie jest optymalnym kodem Hamminga.

(18)

Zadanie 8

Zakoduj w kodzie Hamminga następujące ciągi informacyjne:

a) 10 b) 101 c) 1110 d) 001100

e) 110101101001010

a) Słowo 10 zapisujemy pozostawiając miejsce na nadmiarowe bity: __1_0 Obliczamy x1: __1_0  x1=1

Obliczamy x2: 1_1_0  x2= 1 Obliczamy x4: 111_0  x4=0 Odpowiedź: 11100

b) Słowo 101 zapisujemy pozostawiając miejsce na nadmiarowe bity: __1_01 Obliczamy x1: __1_01  x1=1

Obliczamy x2: 1_1_01  x2=0 Obliczamy x4: 101_01  x4 =1 Odpowiedź : 101101

c) Słowo 1110 zapisujemy pozostawiając miejsce na nadmiarowe bity: __1_110 Obliczamy x1: __1_110  x1=0

Obliczamy x2: 0_1_110  x2=0 Obliczamy x4: 001_110  x4 =0 Odpowiedź : 0010110

(19)

Zadanie 8 c.d.

d) Słowo 001100 zapisujemy pozostawiając miejsce na nadmiarowe bity __0_011_00 Obliczamy x1: __0_011_00  x1=1

Obliczamy x2: 1_0_011_00  x2=0 Obliczamy x4: 100_011_00  x4=0 Obliczamy x8: 1000011_00  x8=0 Odpowiedź: 1000011000

e) Słowo 110101101001010 zapisujemy pozostawiając miejsca na nadmiarowe bity __1_101_0110100_1010

Obliczamy x1: __1_101_0110100_1010  x1=1 Obliczamy x2: 1_1_101_0110100_1010  x2= 1 Obliczamy x4: 111_101_0110100_1010  x4=1 Obliczamy x8: 1111101_0110100_1010  x8 =1 Obliczamy x16: 111110110110100_1010  x16=0 Odpowiedź: 11111011011010001010

(20)

Zadanie 9

Zakoduj w kodzie Hamminga słowo „KONIEC” , które zostało przedstawione kodem ASCII (jako kod źródła) jako słowa 7-bitowe, K=75, O=79, N=78, C=67, E=69, I=73.

Poszczególne znaki koduj osobno.

Litera K binarnie: 1001011

Zapisujemy dane słowo pozostawiając miejsce na nadmiarowe bity: __1_001_011 x1: __1_001_011  x1=1

x2: 1_1_001_011  x2=0 x4: 101_001_011  x4=1 x8: 1011001_011  x8=0 Zakodowane K : 10110010011

Postępując podobnie jak dla litery K kodujemy kolejne litery:

Zakodowane O (binarnie 1001111): 00110011111 Zakodowane N (binarnie 1001110): 11110010110 Zakodowane I (binarnie 1001001): 11110011001 Zakodowane E (binarnie 1000101): 10100000101 Zakodowane C (binarnie 1000011): 01100000011

Cytaty

Powiązane dokumenty

Myślę zatem, że można rozpatrywać ten spór jako jedną z odsłon gry toczącej się w polu dziennikarskim, w której stawką jest przeforsowanie określonej defi nicji

Stretching statyczny to ćwiczenia, które polegają na rozciąganiu mięśni podczas spoczynku (tzn. na wyizolowaniu grupy mięśniowej w odpowiedniej pozycji i utrzymaniu tej

Wspólny rynek, strefa wolnego handlu, unia walutowa, unia celna?. Unia celna, unia walutowa, strefa wolnego handlu,

Adam wykona á dwa razy wiĊkszą pracĊ niĪ

Wymień klasy adresów IP, gdzie się je stosuje, jaka jest minimalna

Staraj się nie popełniać błędów przy zaznaczaniu odpowiedzi, ale jeżeli się pomylisz, błędne zaznaczenie otocz kółkiem i zaznacz inną odpowiedź.. Rozwiązania zadań

Po każdej jednostce czasu następują narodziny i zgony oraz starze- nie (przechodzenie do następnej

D la oddania postaw y badanych wobec perspektywy energetyki jądrowej w naszym kraju znaczące są zagrożenia źródeł pochodzenia (technologii wytwarzania) energii