October 11, 2024

Adatábrázolás, tömörítés

Tény, hogy különféle számítógépek különböző adatábrázolási módokat használnak. Ez karakterek esetén lehet különböző kódrendszerek használata (az IBM nagy gépek EBCDIC-kódja vagy az ASCII kód), de lehetnek a számábrázolásban különbségek is. Ha két gép között ilyen eltérések vannak, akkor a hálózati kapcsolat során átvitt adatokat a megfelelő reprezentálás érdekében átalakítani, konvertálni kell. Strukturált adatok esetén pl. rekordok esetén a helyzet bonyolultabb, mivel egyes mezőket
kell konvertálni, míg másokat nem.

Adattömörítés

Mivel a hálózatok használatáért általában fizetni kell, egyáltalán nem mindegy hogy időegység alatt mennyi információt viszünk át rajta. Az adatok ábrázolása általában redundáns. A csatornán elküldött információt szimbólumsorozatként is felfoghatjuk, amelyek egy adott szimbólumkészletből származnak, pl. decimális számjegyek készlete, karakterek készlete, stb. Az adattömörítés elvét a 25. ábra mutatja.

Adattömörítés/kicsomagolás
25. ábra: A tömörítési módszer

A következőkben néhány tömörítési eljárást ismertetünk:

Darabszám-kódolás: Ha egy adathalmazban sok egymás után következő azonos szimbólum fordul elő, célszerű egy külön szimbólumot fenntartani az ismétlődés jelzésére, és utána következik az ismétlődő szimbólum, míg az azt követő számérték jelzi az ismétlődő szimbólumok számát:

Például a felkiáltó jel legyen az ismétlődés jelző: !

   ! (szimbólum) <x=számérték 0-255 között > a szimbólum    <x>-szer ismétlődik
   !A112 -> 112 A betű egymás után
   !! - > maga a ! jel

Szimbólumsor-helyettesítés: gyakori azonos szimbólumsor helyett egy speciális szimbólum

Például ilyen a tabulátor (TAB) jel is! (8 betűközt ér)

Minta helyettesítés: gyakori szimbólumsorozat helyettesítése speciális szimbólummal

Például a BASIC nyelvben szereplő definiált alapszavak (INPUT, FOR, stb.) a program futtatása előtt úgy bájtokban tömörítik, hogy a változókat, adatokat leíró ASCII karakterrel ábrázolt részeket változatlanul hagyják, (legfelső bit =0), míg az alapszavakhoz a maradék 128 kód valamelyikét rendelik hozzá (legfelső bit=1). Például: 80H->FOR, 81H->INPUT, stb. Ezzel az ún. tokenizálással a szöveges BASIC program mérete jelentősen csökkenthető.

Sorozathossz kódolás (Run Lenght Encoding = RLL): Sok nullát tartalmazó bináris sorozatokban a nullák számát bináris számként adjuk meg.

Például:

000100100000100001 -> a nullák száma: 3 2 5 4 -> 3 bittel kódolva : 011    010 101 100
   18 bit                              12 bit

Statisztikai kódolás: a kódhossz a kód előfordulási gyakoriságától függ. Ennek az a lényege hogy a információt leíró kódhalmazban a kódok hosszát azok gyakorisága alapján állapítjuk meg.

Jó példa erre a Morse ABC. Itt az angol szövegek leggyakoribb betűjének az “e”-nek a kódja a legrövidebb: a pont. A szintén gyakori “t” – nek pedig a vonás. Ilyen vonatkozásban, az ASCII kódrendszer, ahol minden szimbólum hossza egyformán 7 bit nem jó megoldás.

Huffmann kódolás: egyes jelek, vagy bájtsorozatok előfordulási gyakoriságát figyeli, és generált kód hossz ettől függ

Aritmetikai kódolás: mint az előbbi, de a megelőző jeleket is figyeli

Transzformációs kódolás: Ilyen például a Fourier transzformáció: egy periodikus időfüggvényt adott amplitudójú és kezdeti fázisszögű szinusz-hullámok összegével írunk le. Általánosabban fogalmazva nagyon sok folytonos öszetett jelenség írható le vektorizációval: egy raszterpontokból álló kép leírható alapalakzatok (körök, vonalak, és koordinátáik) segítségével (vektorgrafika). Egy zeneszámot MIDI formátumban szintén alap hang és ritmusegységek írnak le, stb.

Subband kódolás: csak bizonyos frekvenciatartományba eső jeleket transzformáljuk (pl. telefon: 0-4 kHz)

Predikció vagy relatív kódolás: ha az egymást követő jelek nem sokban térnek el egymástól, akkor elég a kis különbségeket kódolni.

Például a PCM Pulzus Kód Modulációnál a beszédet 8 kHz-el mintavételezve 8 bites felbontással (kvantálással) -> 64 kbit/s adatfolyam keletkezik. Kisebb sebességű adatfolyam adódik, ha csak a mintavételezett jelek változását kódoljuk. Ez a Delta PCM.

Ezek az előbbiekben felsorolt módszerek a gyakorlatban mind használhatók, a be- és kitömörítést programok, vagy jelenleg már egyre inkább hardware (egy chip)  segítségével oldják meg.