Informatka alapja-1 Kódolás alapja 1/19 M az nformácó? valamnek az smerete (pl. fzka mennység) ahhoz, hogy feldolgozn, tároln, továbbítan tudjuk, számmá kell alakítanunk (kódoln kell) A mérnök gyakran műszerreket használ nformácó szerzésre A környezetmérnök műszerekkel mér (adatokat, nformácót gyűjt) a - légszennyezetséget - vízszennyezettséget - talajszennyezettséget - zajszennyezettséget stb. A műszer szenzora a fzka mennységet azzal smert függvénykapcsolatban levő (sokszor lneárs) elektromos mennységgé (feszültség, áram) alakítja. Az elektromos mennységet analóg erősítővel felelrősítk, analóg-dgtál konverter (A/D) számmá alakítja. A műszer mkroszámítógépe az így kapott nformácót feldolgozza és kjelz a mért fzka mennységet a megfelő mértékegységben. fzka mennység szenzor elektromos mennység (pl. feszültség) A/D feszültséggel arányos szám mkroszámítógép (mkrokontroller) kjelzõ kommunkácós csatorna PC-fele (pl. USB) adattároló (pl. SD card) oxgénmérő oxgén: 0... 100 % O2 Az A/D konvertálás után a dgtáls automata dgtáls kódokkal dolgozk. A mkroszámítógép artmetka kódokkal számol, az nformácót kódolva küld tovább a kommunkácós csatornán a PCnek. 1
Informatka alapja-1 Kódolás alapja 2/19 Kódoláselmélet alapja I. Az nformácó átvtel ll. feldolgozás során az nformácót elektromos jellé kell alakítan, hogy az elektromossággal működő nformácó feldolgozó géppel feldolgozható legyen. Ezt az átalakítást analóg esetben analóg kódolásnak s nevezhetjük. jel átalakító nformácó feldolozó dgtáls automata jel átalakító Az nformácó feldolgozó gép kódokkal dolgozk. Analóg kód: ampltúdóban és dőben folytonos (véges dő alatt végtelen nformácót hordoz, de a mndg jelenlevő zajok matt csak véges használható fel) Egy hagyományos telefonnál a hangot (levegő nyomás változást) a mkrofon elektromos jellé (analóg kódolás), feszültség változássá alakítja. Ez erősítővel felerősítés után továbbhalad a telefonközponton keresztül egy másk telefonhoz, ahol a telefon hallagtóban újra hangnyomás változássá alakul (analóg dekódolás). Az átvtel során a jelhez zaj adódk, amelyet szntén felerősít az erősítő. Mennél több analóg jelfeldolgozó áramkörön halad át az analóg jel, annál jobban romlk a jelnek a zajhoz képest értéke (jel/zaj vszony.) Az analóg jelfeldolgozók méretét a zaj jelentősen korlátozza. analóg jel A1 + A2 + A3 zajjal terhelt jel zaj forrás zaj forrás A zajforrások sokfélék lehetnek. Analóg áramköröknél a hálózat 50Hz az egyk nagy zajforrás. Rádós átvtelnél a légkör zavarok okoznak jelentős zajt. De ha mnden külső zajt skerülne s kküszöböln, maguk az áramkörök akkor s termelnének valamekkora zajt (termkus zaj). 2
Informatka alapja-1 Kódolás alapja 3/19 Ma módszer: analóg dgtáls alakítás, dgtáls feldolgozás, dgtáls analóg átalakítás (előtte és utána szűrés) dgtáls kód: ampltúdóban és dőben dszkréten értelmezett (véges dő alatt véges nformácót hordoz) mntavételezés: T mntát vesznek az analóg jelből és tárolják kvantálálás: analóg jellel arányos n btes számmá alakítás mntavevõ tartó mntavételezett jel analóg jel A/D T kvantált jel n bt A mntavételezés, kvantálás A eredet és kvantált jel 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 t 0 t A dgtalzált nformácó az analóghoz képest sok nagyságrenddel pontosabban vhető át, ll. dolgozható fel. A dgtáls nformácó helyes átvtelét egyrészt áramkörleg az analóghoz képest sokkal nagyobb bztonsággal meg lehet oldan, mert 1 btny nformácó továbbításakor csak 2 érték fordulhat elő pl. a 0-át és az 1-et reprezentáló feszültség vagy áram érték, és ez vszonylag nagy zaj mellet s jól megkülönböztethető megfelelő áramkör megoldásokkal. Másrész megfelelő kódolásal az előforduló hbákat jelezn, sőt javítan s lehet. 3
Informatka alapja-1 Kódolás alapja 4/19 A dgtáls kódokat és kódolást az nformácó átvtel oldaláról közelítjük meg. nformácó forrás x u u' x kódoló csatorna dekódoló felhasználás A kódolás magába foglalja az ún. forrás kódolást, melynek célja az nformácó tömörítése, a ttkosítást, melynek célja, hogy lletéktelen ne tudja vsszafejten az nformácót, a csatorna kódolást, melynek célja a dgtáls nformácó hbátlan átvtele Egyszerű példa dgtáls nformácó átvtelre: nformácó forrás: pl: magyar szöveg kódolás: pl: a magyar szöveg betűnként kódolása bnárs számokká (pl. ASCII kód) csatorna: pl: két állapotú, fzkalag két feszültségsznt reprezentálja dekódolás: pl: a bnárs számok magyar karakterekké alakítása A csatorna lehet több állapotú s de tt csak a két állapotúval foglalkozunk A a 1, a 2,... a n forrás ABC Bnárs kód esetén a kód ABC 2 elemű: {0, 1} K 1, 2,... n a kód ABC betűből képzett véges hosszúságú sorozatok halmaza Pl. bnárs kód esetén K = {00, 010, 0111, } A 2-es számrendszrű számok egy számjegyét bt-nek nevezk, a bnary dgt (bnárs számjegy) rövdítéseként Betű szernt kódolás: Az A halmaz mnden karakterének megfeleltetjük K egy-egy elemét ( a forrás ABC betû b A a c K 000 00110 11 kód, a,... ) 1 1 2 2 kódszavak A K halmazt kódnak nevezzük. A K halmaz eleme a kódszavak, de a kódszavakat s szokás kódnak nevezn. Kódok osztályozása: karakterkészlet alapján: - bnárs, {0,1} - nem bnárs pl. {0, 1, 2} a kódszavak hosszúsága alapján: - fx hosszóságú, Pl. {100, 010, 111} - változó hosszúságú Pl. {01, 110,1111} alkalmazás cél alapján: - artmetka (1-es komlemens, offszet stb.), - pozcó (Pl. Gray kód, Jophnson kód) - hbajavító (Pl. Hammng kód) 4
Informatka alapja-1 Kódolás alapja 5/19 stb... 1. példa: Mekkora fx hosszúságú kód szükséges, ha a kódolandó halmaz számossága N=9, a kód ABC betűnek száma k=3? Egy betűvel 3 elemet kódolhatunk, két betűvel 3*3-at, x betűvel x=2 x k N, x log N k -edkent. Az nformácó mértékegysége Menny nformácót hordoz egy karakter, ha a k-féle van belőle és mndegyk egyforma valószínűséggel fordul elő az átküldendő sorozatban? Az egyes karakterek azt az nformácót hordozzák, hogy a k-féle lehetőségből éppen melyket válsztottuk. Pl. ha azt akarjuk átkülden a csatornán, hogy egy kockával egymás után dobva éppen mely számok jöttek k, akkor az aktuálsan vett karakter megmondja, hogy a 6 féle lehetőségből épp melyk jött k. Gyakorlat esetekben a választás lehetőségek száma nagyon nagy lehet. Nem csak egy karakter által hordozott nformácó, hanem egymás után írt karakterek (karakter sorozat) által hordozott nformácó s érdekes lehet. Mnt az első példából s kderült, k-féle karakterből n darabot egymás után írva -féle lehetőség van (enny féle üzenet küldhető). Ha egy esemény valószínűsége p, annak bekövetkezését úgy s értelmezhetjük, hogy 1/p féle lehetőségből pont az következett be. A dobókockánál egy konkrét szám pl. a 6-os dobásának valószínűsége p = 1/6, vagys 1/(1/6)=6 féle esemény közül pont a 6-os jött k. Többek között ezért az nformácó mértékéül az választjuk, hogy az hány bten kódolható. Az előző gondolatmenet alapján egy p valószínűségű esemény tehát m=1/p féle lehetőség közül 1 beközvetkezéseként fogható fel, így az bnárs kódolással log bten kódolható vagys enny nformácót hordoz (ld-vel a 2-es alapú 2 1/ p ld p logartmust jelöljük). x 3 n k Ez a ks példa talán érzékeltet, hogy mért gaz az, hogy a p valószínűségű esemény bekövetkezése által hordozott nformácó: ld p bt Változó hosszúságú kódolás (forrás kódolás) Itt a kódolás célja az nformácó tömörítése. A változó hosszúságú kódolás esetén a kódszavak hossza különböző lehet, de ügyeln kell a megfejthetőségre. Megfejthetőség Egy kód megfejhető, ha a kódszavaból előállított tetszőleges üzenet egyértelműen felbontható a kód kódszavara. A következő kód nem megfejthető {a: 00, b:01, c:11, d:0001}, ugyans az abd kódolásával adódó 00010001 üzenet abd,dab, abab és dd üzenetként s értelmezhető. A problémát az okozta, hogy voltak kódszavak, amelyek más kódszó után írt karakterek segítségével generálhatók. Prefx tulajdonság: egyk kódszó sem folytatása egy másknak. pl: a {01, 001, 100, 1100} kód prefx 5
Informatka alapja-1 Kódolás alapja 6/19 Ha a kódszavak hossza egyforma, akkor a kódolt üzenet bztosan megfejthető, hszen prefx. A prefx tulajdonság a megfejthetőség elégséges, de nem szükséges feltétele. Feladat: Próbáljon nem prefx, de megfejthető változó hosszú kódot generáln, 4 eseményhez! A {10, 100, 1000, 10000} kód nem prefx, de megfejhető, mert a kódszavak határát jelz az első karakter. A prefx tulajdonságú kód fagráf segítségével generálható. Pl. bnárs prefx kódot bnárs fával generálhatunk. A gyökértől egy-egy levélg haladva megkapjuk a kódokat. 0 1 0 1 00 010 011 10 110 111111 Így konstruálva egy k2 kód csak akkor folytatása egy k1-nek, ha k2-höz k1-en keresztül lehet eljutn, de akkor k1 nem levele a gráfnak, hanem egy belső pontja.. Ha az nformácós csatorna zajmentes, akkor a mnél rövdebb (olcsóbb, gyorsabb, tömörebb) üzenet a cél. 6
Informatka alapja-1 Kódolás alapja 7/19 Kód költsége Egy nformácó átvtelének (vagy tárolásának) költsége annál nagyobb, mnél hosszabb. Ezért zajmentes esetben a kódolás elsődleges célja, az átlagos kódhossz csökkentése. Az átlagos kódszóhosszt nevezk kód költségének. Ha adott egy-egy karakter ( a ) előfordulás valószínűsége, p, az a hez tartozó kódszó hossza l és ld 1 p p 1 (teljes eseményrendszer, vagys mnden esemény előfordul 0-nál nagyobb valószínűséggel) Az M számú karakterből álló üzenet kódjának átlagos hossza a következő gondolatmenettel számítható: - az M karaktert kódoló üzenetben átlagosan p na M M, n a Mp - a üzenetben előforduló a karakterek kódjának együttes hossza: Mp l - a teljes kódolt üzenet várható hossza: M p l -szer fordul elő az a karakter, mert - a kód költsége: lm Kódolt üzenet hossza M M p l ennek létezk alsó korlátja, s ez bzonyíthatóan a következőkben defnált entrópa. Defnícó: Ha egy X teljes eseményrendszer eloszlása {p1,p2,p3,..pn} akkor a következő kfejezés az X entrópája (Shannon formula) 1 H ( X ) pld pld p p Összehasonlítva az átlagos kódszóhosszat az alsó korlátját adó entrópával, azt mondhatjuk, hogy deáls kódolás esetén (am többnyre nem valósítható meg), a p valószínűségű eseményt számú bten kellene kódoln (ekkor érnénk el a költség elv mnmumát). Ezt úgy s értelmezhetjük, hogy a p valószínőségű esemény enny bt nformácót hordoz, mnt ahogy ezt már említettük. Tehát egy esemény annál több nformácót hordoz, mennél valószínűtlenebb. (Ha a lottón 5 találatunk van, az sokkal több nformácó, mnt ha megtudjuk, hogy egyáltalán nncs.) Általános elv, hogy a rtkábban előforduló eseményt (karaktert) kódoljuk hosszabb kóddal. 7
Informatka alapja-1 Kódolás alapja 8/19 Huffmann kód A Huffmann kód változó hosszúságú optmáls költségű prefx kód. A kódolás algortmusát a következő példán mutatjuk be: Adott az alább kód és valószínűségek: {a1:0.2 a2:0.2, a3:0.19, a4:0.12, a5:0.11,a6:0.09,a7:0.09} p 1 teljesül a. Vegyük a két legksebb valószínűségű eseményt és különböztessük meg őket egy bttel, s utána vonjuk őket össze egyetlen olyan eseménnyé, melyek valószínűsége a két esemény valószínűségének összege. a6:0.09 a7:0.09 0.18 Ezután az összevont eseménnyel helyettesítve azokat, amelyek összevonásából keletkezett, folytassuk az előző pont szernt, amíg lehetséges. Az összes lépés elvégzése után a következő adódk: a6:0.09 a7:0.09 a:67:0.18 a3:0.19 a5:0.11 a4:0.12 a1:0.2 a2:0.2 a673:0.37 a54:0.23 a12:0.4 a67354:0.6 Az egyes események kódolása a kadódó fa gyökerétől kndulva egy-egy levélg (kódolandó karakterek) található 0-kat ll. 1-eket egymásután írva adódk: a1:00, a2:01, a3:101, a4:111, a5:110, a6:1000, a7:1001 Az átlagos kódszó hossz: 2*0.2+2*0.2+3*0.19+3*0.12+3*0.11+4*0.09+4*0.09=2.78 Láthatóan, még a Huffman kóddal sem értük el az elv határt. Ennek oka, hogy dszkrét számú eseményünk van, a valószínűségek pedg tpkusan nem értékűek, ezért általában csak megközelíten tudjuk az elv mnmumot. Mennél több eseményünk van, annál jobban megközelíthetjük a mnmumot. Hogyan lehetne növeln a kódolandó események számát? 1/ 2 8
Informatka alapja-1 Kódolás alapja 9/19 Forráskterjesztés Ha nem az eseményeket, hanem esemény párokat kódolunk, akkor n eseményből nxn eseményt csnálunk. Az esemény párok kódolása azt jelent, hogy ha át akarjuk vnn pl. az alma szót, akkor az eredet karakterek helyett az al és a ma karakterpárokat kódoljuk. Az nxn lehetséges esemény (karakter pár) kódolásához több bt kell, mnt egy karakter kódolásához, de a hozzá tartozó valószínüségek s ksebbek, független események esetén az egyes valószínűségek szorzata. Ha az eredet eseményrendszer: {a1:0.3, a2:0.7} akkor a kterjesztett: a1:0.3 a2:0.7 a1:0.3 a1a1:0.09 a1a2:0.21 a2:0.7 a2a1:0.21 a2a2:0.49 Az ez alapján számolt átlagos kódszóhossz az 2 karakterre vonatkozk, ezért 2-vel osztan kell, ha össze akarjuk hasonlítan az eredetvel. Az eredet eseményeket 1 bten lehet kódoln, így az átlagos kódszóhossz s 1. A kterjesztett eseményrendszer Huffman kódolással: {a1a1:000, a1a2:001, a2a1:01, a2a2:1} az egy karakterre jutó átlagos kódszóhossz 1.81/2=0.905, az eredet eseményekre vonatkozó elv mnmum pedg:0.881, amt így jobban megközelítettünk. Természetesen a forráskterjesztés nem csak 2, hanem több esemény alapján s elvégezhető. Felhasználás példák A változó hosszúságú kódolás felhasználására gyakorlat példa, a fle tömörítés. A fleban levő karakterekről statsztkát készítve megállapítható a karakterek előfordulás valószínűsége. Ez alapján pedg elvégezhető a tömörítés. Természetesen a tömörített fle-ban el kell tároln az egyes karakterek kódját s. ZIP kódolás fő jellemző Egy vagy több fle egyetlen fle-ba becsomagolva A fle-ok a ZIP fle-ban szétválasztva vannak benne, egyenként törölhetők, módosíthatók, vagy új fle-ok tehetők be. A program az egyes fle-okat különböző módszerekkel tömörít, Huffmann kódolást s használ A tömörítéssel együtt ttkosítás s történhet A hba hatása korlátozódk arra az eredet fle-ra, melynek becsomagolt formájában a hba előfordul. 9
Informatka alapja-1 Kódolás alapja 10/19 Run Length Encodng (RLE, Futam hossz kódolás) A fekete-fehér képet, ha sorokra bontjuk, sok egyforma képpont követ egymást. ehhez képest rtka a váltás. Az egyforma adatokból álló sorozat helyett a sorozat darabszámát és az elemet továbbítjuk. (pl:5w2b9w 5 fehér, 2 fekete, 9 fehér) Legegyszerűbb esetben a tömörítés csak egy soron belül történk. Pl. A betű képe esetén: 0000011000000000 5w2b9w 0000110110000000 4w2bw2b7w 0001100011000000 3w2b3w2b6w 0011111111100000 2w9b5w 0110000000110000 w2b7w2b4w 1100000000011000 2b9w2b3w Bonyolultabb algortmus azt s khasználja, hogy az egymás után sorok hasonlóak. 10
Informatka alapja-1 Kódolás alapja 11/19 Fx hosszúságú kódolás (csatorna kódolás) Zajos csatorna esetén a cél, a mennél ksebb hbával történő átvtel. A különböző zajos csatornákat különféleképpen lehet modellezn: A bnárs szmmetrkus emlékezet nélkül zajos csatorna esetén a helyes átvtel (0-ból 0 lesz, 1-ből 1 lesz) valószínűsége p (p>0.5), a hbásé pedg (1-ből 0 lesz 0-ból 1 lesz) 1-p p 0 0 1-p 1 1 p (p>0.5, ha ez nem teljesül akkor a csatorna nvertál...) Aszmmetrkus csatorna esetén a 0 ll az 1 helyes átvtelének valószínűsége eltér: p1 0 0 1-p1 1-p2 1 p2 1 A fent a hbamodellekben un. átállítódásos hbák szerepelnek, vagys hba esetén az nformácós bt negáltját érzékel a vevő logka. A hbák jelzésének ll. javíthatóságának érdekében - Fx hosszúságú kódolást alkalmazunk, és - Nem használjuk k a kódtér összes elemét (az adott bt hosszúsággal lehetséges összes kódot), hanem csak ennek egy ksebb része megengedett az átvtel során. - Úgy kódolunk, hogy a feltételezett legnagyobb számú hba esetén se fordulhasson elő, hogy a hba hatására egy megengedett kód megengedett kóddá alakuljon. - A maxmálsan feltételezett számú vagy kevesebb hba hatására tehát a megengedett kódból nem megengedett válk, ezért mndenképpen detektáln tudjuk a hbát, s ha a megengedett kódok "elég mesze" vannak egymástól, akkor javítan s tudjuk (a hbás kódhoz legközelebb megengedett kódszóra javítunk). 11
Informatka alapja-1 Kódolás alapja 12/19 A kódok (a hperkocka pontja) között távolságot lehet értelmezn. Két kódszó Hammng távolsága H(a,b): az eltérő btek (koordnáták) száma Pl: H(101,010)=3 A kódszó súlya W(a): az 1-es btek száma a kódszóban W(10110)=3 Ennek segítségével könnyen kszámítható két kódszó Hammng távolsága, a két kódszót btenként EXOR (kzáró VAGY) kapcsolatba hozva, az eredmény súlya adja a Hammng távolságukat. (Két bt EXOR kapcsolata csak akkor ad 1-et, ha a btek eltérők.) Pl. legyen a két kód a: 1110, b: 01011 H(a,b)=W(a b) 10110 01011 ------------ 11101 W(11101)=4 Kód Hammng távolsága: a mnmáls Hammng távolság a kódszavak között Hba detektálása: a hbás kódszó nem eleme a kódtérnek (nem használják) Hba javítása: a kódtér legközelebb elemére javítunk Példák fx hosszúságú kódokra: 1 hbát detektál a kétszer smétlő kód (pl: 0000, 0101, 1010, 1111). Hba van, ha a kód két fele nem megegyező. 1 ll. páratlan hbát detektál a partás kód. Az kódszót kegészítk egy. partás bttel, mely megegyezéstől függően párosra vagy páratlanra egészít k a több bteben levő 1-esek számát. Páratlan számú hba hatására a partás bt ellenkezőjére változk, amt a vevő oldalon a partás ellenőrzésekor észreveszünk. Partás kódot használnak pl. a soros adatátvtel során a PC-ben s. (Pl: páros partású partás kód: (pl:000, 011, 101, 110) 1 hbát javít a 3-szor smétlő kód (pl: 000000,010101,101010,111111). Amelyk két kódrész egyező, az a helyes. 12
Informatka alapja-1 Kódolás alapja 13/19 A Hammng távolság és a hba detektálás ll. hba javítás között összefüggés átállítódásásos hbák esetére: t d a. t d hba detektálható, ha H t d 1 k1k2 t j b. t j hba javítható, ha H t j 2 1 k1 k2 c. t j hba javítható és t d hba detektálható ha H t t d j 1 t j H(k1,k2)-t j k1 k2 t d A t H t d j egyenlőlenségnek teljesüln kell, különben a detektálandó hba az egyk kódtól t j, vagy ksebb távolságra esk, tehát nem lesz eldönthető, hogy javítan, vagy detektáln kell. Tehát t H t H t t d j d j 1, emellett t d t j 3. példa: Készítsünk mnmáls hosszúságú, 1 hba javítására alkalmas kódot! Hány kódszót használunk k a lehetséges kódok közül? z 100 110 Ha egy hbát akarunk javítan, az előzőek szernt 3 Hamng 101 távolságú kód szükséges. 3 btes a legrövdebb kód, amelynél 111 már hbát lehet javítan. Itt a 8 lehetséges kódból csak 2-őt lehet használn, ha 1 hbát akarunk javítan (a kocka szemközt 000 010 y csúcsanak megfelelő kódokat), mert csak ezek elégítk k a mnmálsan szükséges 3 Hammng távolságot. Pl. az 010 és 001 101. A kódtér több 6 elemét nem használjuk k. Ha egy hba 011 bekövetkezk, akkor az így keletkezett kód mnden más kódnál x közelebb lesz az eredethez. Ha a 010 helyett 011 megy át a csatornán, akkor ahogy az alább ábra s mutatja, a feltéltelezett 1 hba esetén ehhez az átvtelhez használt kódok közül (010, 101) a 010 kód van legközelebb. Mvel a lehetséges kódok közül csak 2-őt használtunk k, ezért ezzel a kóddal 1 bt nformácót tudunk - de azt vszonylag bztonságosan - kódoln. A több btre a bztonságosabb átvtel matt van szükség. Ha a csatornában az átvtel során feltételezett hbák maxmáls száma 2, ez a kód csak hba jelzésre használható, javításra nem. Egy vagy két hba hatására s bztosan a nem használt 6 másk kód valamelykévé válk az átvendő kód, de a pontosan 2 hba hatására keletkező kód a másk használt kódhoz lesz közelebb. 13
Informatka alapja-1 Kódolás alapja 14/19 Redundaca Mnt az előző példában látható, a hba jelzés ll. javítás matt több btet kell felhasználnunk az nformácó átvtelhez, mnt am mnmálsan szükséges, vagys redundánsan kódolunk. Akkor hatékony a kódolás, ha a célt (az adott számú hba javítását ll. jelzését) a mnmálsan szükséges számú bt felhasználásával érjük el, vagys mnmáls a redundanca. A Hammng kód A Hammng kód egy hba javítására képes, így 3 Hammng távolságú. A kódban a k darab nformácós bt között p darab páros partás bt s el van helyezve. A feltételezett 1 hba esetén a vett és számított partásbtek összehasonlításával képzett bnárs szám megadja a hbás bt pozícóját, a 0 eredmény hbátlan átvtelt jelez. Természetesen maguk a partás btek s elromolhatnak, így ekkor a hbás partás bt pozícóját fogja adn ez a szám (a bt pozícók 1-től sorszámozódnak). Mndebből következk, hogy ha k nformácós btünk van, akkor ennek a kód összes k+p btpozícójára rá kell tudn mutatna. Pl. 3 partás bt esetén az összes bt lehet (a 0-t le kell vonn, mert az a hbátlant jelez), így az nformácós btek száma 7-3 = 4 lehet. 2 3 1 7 A partás btek a 2 egész számú hatványának megfelelő btpozícókon vannak: a7 a6 a5 p4 a3 p2 p1 Egy-egy partás bt azon sorszámú nformácós btek alapján számítandó (azok partását egészít k párosra), amelyek ndexének bnárs megfelelőjét a partás btekkel leírva, az adott partás bt 1 értékű. Az előbb példánál maradva, az alább táblázatból kderül, hogy p4 az a7,a6,a5, partása, p2 az a7, a6, a3 partása, p1 pedg a7, a5, a3 partása. p4 p2 p1 a7 1 1 1 a6 1 1 0 a5 1 a3 1 A kód dekódolása úgy történk, hogy a vevő oldalon szntén képezk a partás bteket. Ha 1 bt elromlk, akkor azok a partás btek, amelyek képzésében a bt résztvesz, szntén megváltoznak az ellenőrzés során. A megváltozott partás btek helyett 1-et, a több helyett 0-t írva, az így kapott bnárs szám megadja a hbás bt pozícóját, amt megnvertálva megkapjuk az eredet hbátlan btet. (Csak 1 hba esetén működk!) Az így előállított Hammng kódot H(7,4)-el jelölk H(összes btek száma, nformácós btek száma) 14
Informatka alapja-1 Kódolás alapja 15/19 Pl. Az átküldendő nformácós btek: 1011 A partásbtekkel kegészített teljes kódszó: a7 a6 a5 p4 a3 p2 p1 Az eredet kódszó: 1 Legyen a5 hbás, a vett kódszó: 1 0 0 A vett kódszó számított partás btje: 1 0 0 Változás a vett partáshoz képest: 1 A táblázatból látható, hogy a p4, p2, p1 partások vett és számított értékét összehasonlítva és 1-et írva, ahol különböznek (EXOR művelet) az eredmény 101b=5 megadja a hbás bt pozícóját. A hbajavításhoz tehát ezt a btet kell nvertáln. Hammng kódot használnak pl. a teletext átvtelben s. Néhány egyéb fontos kód Pozícó kódok Pozcó (helyzet) kódolására használják (pl: a forgó sznpad éppen hogy áll). Az egymásután következő pozícók kódja egy Hammng távolságú. Igy a pozícó érzékelők (pl. foto érzékelők) a pozícó határ átmenetnél nem adnak hbásan "távol" pozícót jelentő kódot, ahogy az több Hammng távolságú kód estén előfordulhatna. Gray kód Az alább ábra egy vízszntes szakaszt 8 részre osztva kódol, Gray kóddal. A kombnácós hálózatok grafkus egyszerűsítésénél használt Karnaugh tábla peremezése s Gray kódú. Tükrözéses módszerrel lehet ksebb btszámú pozícó kódból nagyobbat készíten. Induljunk k a 2 btes Gray kódból (most a ksebb helyfoglalás matt az egymás alatt számok adják a kódot, 00,01,11,10): 0011 0110 Folytassuk a kódok felírását fordított sorrendben (tükrözés), majd a rég kódok elő írjunk 0-át, a tükrözöttek elé pedg 1-et: 000111 0011 1100 0110 0110 Látható, hogy így megkaptuk az előbb ábrának megfelelő Gray kódot. 15
Informatka alapja-1 Kódolás alapja 16/19 Ttkosítás A ttkosítás célja az, hogy csak az tudja elolvasn az üzenetet, aknek szól. Ttkos az, amt nem tudunk elolvasn, például - heroglfák - bármlyen degen nyelv, amt nem smerünk A jó ttkosírást a kulcs smerete nélkül nagyon nehéz, vagy gyakorlatlag lehetetlen megfejten. Kulcs: szótár és/vagy algortmus, amvel az üzenet ttkosítható és megfejthető. A klasszkus ttkosírásokban kétféle módszert alkalmaztak: - helyettesítés, ennek egyszerű esete a karakterkódok hexadecmáls megadása. - áthelyezés, amkor a szöveg karakteret átrendezk. Az áthelyezéses ttkosítás (betűk szsztematkus összekeverése) klasszkus esete a perforált négyzetrács alkalmazása. Készítsünk négyzetrácsot, melyen a négyzeteket úgy perforálják, hogy a négyzetet 90 fokonként forgatva mndg más helyen legyenek a lyukak (szorgalm feladat: hogyan lehet lyen négyzetrácsot készíten?): A rácson lévő üres helyekre beírjuk az INFORMATIKA ALAP szöveg első 4 betűjét, majd 90 fokkal elforgatjuk a rácsot, és folytatjuk. Ezt négyszer lehet smételn. A rács levétele után a jobb oldalon lévő négyzet látszk. A ttkos üzenet: IAIRMKLNAAFAPOT. A megfejtéshez négyzetbe rendezve le kell írn a ttkosított szöveget, majd a rácsot ráhelyezve és forgatva az eredet szöveg elolvasható. A gyakorlatban sokkal nagyobb négyzetrácsot készítenek, amelyk nehezebben megfejthető. Ehhez hasonló elven működött a 2. vlágháborúban a német tengeralattjárókon alkalmazott Engma ttkosító abban a szöveget háromszor egymás után ttkosították, azaz az átrendezett szöveget egy másk kulccsal újra átrendezték. A szövetségesek a kódot sok-sok üzenetet elemezve megfejtették. Természetesen a helyettesítés és áthelyezés kombnálható. A számítógépes vlágban széleskörűen alkalmazzák a ttkosítást. Kétféle alkalmazást különböztetnek meg: - ttkos kulcsú. Ennél a ttkosításra használt kulcs alkalmazható a dekódolásra s. Ha valak hozzájut a kulcshoz, az meg tudja fejten az üzenetet. A ttkos kulcs megvan az üzenetküldőnél és a vevőnél s. Ha a kulcsot ellopják, vagy feltörk, az üzenet megfejthető. - nylvános kulcsú: a ttkosításra más kulcs szolgál, mnt a dekódolásra. A ttkosításra szolgáló kulcs nylvános lehet, így bárk küldhet ttkos üzenetet, amt vszont csak a jogosított vevő aknél a kulcs van tud dekódoln. A ttkos kulcs csak a vevőnél van meg, az üzenetküldő(k) csak a nylvános kulcsot kapják meg. Ha a nylvános kulcsot ellopják, csak üzenetet külden tudnak, dekódoln nem. Hvatkozások Ttkosítás Ttkos kulcsú ttkosítás Nylvános kulcsú ttkosítás 16
Informatka alapja-1 Kódolás alapja 17/19 Számábrázolások Pozíconáls számábrázolás, tetszőleges számrendszerben, n számjegyű számra: n 1 D D r D 0, r 1 0 Kettes számrendszerben n 1 D D 2 0 D 0,1 111 1101 1110 = 1*2 10 +1*2 9 +1*2 8 +1*2 7 +1*2 6 +0*2 5 +1*2 4 +1*2 3 +1*2 2 +1*2 1 +0*2 0 Decmáls-bnárs konverzó A 2-vel osztás maradéka adják a bnárs számjegyeket, a legksebb helyértéktől kezdve. 2014 =111 1101 1110BIN Hexadecmáls (16-os) decmáls: 2 3 4 5 6 7 8 9 11 12 13 14 15 hexadecmáls: 2 3 4 5 6 7 8 9 A B C D E F bnárs: 0000 0001 0010 0011 0100 0101 0110 0111 100001 101011 110101 111111 Hexadecmmáls-bnárs konverzó Az egyes hexa számjegyeket a megfelelő 4 btes bnárs számokkal helyettesítjük. A9BCH = 101001 1011 1100 17
Informatka alapja-1 Kódolás alapja 18/19 Bnárs- hexadecmáls konverzó 4-es csoportokat képzünk a legksebb bttel kezdődően, ha a baloldalon kevesebb mnt 4 bt marad, 0-kkal kegészítjük. Ezután az így kapott 4 btes bnárs számokat a hexadecmáls megfelelőjükkel helyettesítjük. 10110111101111 001101 111111 2 D E F Előjeles számok ábrázolása előjel+ abszolut értékes egyes komplemens kettes komplemens 3 011 011 011 2 010 010 010 1 001 001 001 0 000, 100 000, 111 000-1 101 1111-2 1101 110-3 111 1001-4 100 Előjeles abszolut értékes A bnárs számok abszolút értéke elé egy előjel bt kerül, mely 0, ha pozttív, 1, ha negatív a szám. Kényelmes előjeles számok ábrázolására, de nehézkes számoln vele. A 0-nak két kódja van, ezért nem használja k az összes lehetőséget. Egyes komplemens A poztív bnárs szám btenként negáltja adja a negatív megfelelőjét. Könnyű egy poztív szám -1 szeresét képezn, de nehézkes számoln. A 0-nak két kódja van, ezért nem használja k az összes lehetőséget. Kettes komplemens A poztív számok ábrázolása azonos az előjeles abszolút értékessel. Egy szám -1 szeresét úgy képezzük, hogy btenként negáltjához 1-et adunk hozzá. Könnyű számoln vele, a megszokott bnárs összeadás az előjeles számok között helyes eredményt ad. A 0-nak egy kódja van. NBCD (Natural Bnary Coded Decmal) kód: a decmáls 0...9 számokhoz 4 btes bnárs számokat (0000...1001) rendel. Pl: 1997 NBCD kódban: 0001 1001 1001 0111 Kényelmes a decmáls számok ábrázolására, de nehézkes számoln vele. 18
Informatka alapja-1 Kódolás alapja 19/19 Artmetka műveletek egész számok között Összeadás Összeadás szabálya (általában 2 operandus között): 0 + 0 = 0 1 + 0 = 1 0 + 1 = 1 1 + 1 = 0, az átvtel 1 Példa: 01001001 73 + 10011111 +159 = 11101000 =232 Szorzás 2-es számrendszerben a 2-vel szorzásnál 1-el balra toljuk a számjegyeket. 0011*10 = 0110 N szorozva M= rn*2 2 + r1*2 1 + r0*2 0 N*M = N*rn*2 2 + N*r1*2 1 + N*r0*2 0 r є {0,1} számmal. Abban az estben, ha r = 1, akkor az N szám -szer balra shfteltjét (2 -szeresét) hozzáadjuk az eddg szorzatösszeghez. Bnársan: 1110 * 1101 14*13 = 182 + 1110 + 00000 + 111000 +1110000 =10110110 = 128+32+16+4+2 = 182 Valós számok ábrázolása 2-es számrendszerben, fxpontos számábrázolás A tört részeket 2 negatív hatványaval adjuk meg: N= rn*2 2 + r1*2 1 + r0*2 0 + r-1*2-1 + r-2*2-1 A tört rész helyét ponttal jelöljük: 110.101BIN = 4+2+1/2+1/8 = 6.625 A lebegőpontos számárázolással tt nem foglalkozunk. 19