Jelátalakítás és kódolás Információ, adat, kódolás Az információ valamely jelenségre vonatkozó értelmes közlés, amely új ismereteket szolgáltat az információ felhasználójának. Valójában információnak tekinthető minden inger, amely a környezetünkből hozzánk érkezik. A hangok, a látvány, az ízek, a hőérzet, továbbá a gondolatok, amelyeket hallunk, vagy olvasunk stb. Ahhoz, hogy az információt tárolhassuk, feldolgozhassuk, és továbbíthassuk, valamilyen jelrendszer segítségével rögzítenünk kell. Ezt a folyamatot kódolásnak nevezzük. Ilyen jelrendszerek például az írás különféle változatai, vagy a zenei kotta. A számítógépek mindenféle információt számok formájában „írnak le”, azaz rögzítenek. Így válik az információ a számítógép által feldolgozható adattá. Az adat tehát az információnak a számítógépes rendszerben való megjelenési formája. Az első számítógépekben az adatokat tízes számrendszerben tárolták. Később azonban – Neumann János javaslatára – áttértek a kettes számrendszerre. Manapság a legtöbb számítógép a kettes számrendszert használja.
Az informatikában használatos számrendszerek Az informatikai eszközök nem a hétköznapi életben használatos tízes (decimális) számrendszert használják, hanem a kettes (bináris) számrendszert. Ennek az az oka, hogy a gépeknek nincs 10 ujjuk, amin számolhatnak, viszont az elektronika világában a kettes számrendszer jól kezelhető. (Egy áramkörben vagy folyik áram, vagy nem.) A kettes számrendszer használatának ötlete Neumann Jánostól származik. A számítógépen leggyakrabban nyolc számjegyből álló bináris számokkal találkozhatunk. A nyolc számjegyen ábrázolható legnagyobb érték a 255=(128+64+32+16+8+4+2+1). Mivel a kettes számrendszerbeli számok nagyon hosszúak (sok jegyből állnak), ezért az informatikusok gyakran dolgoznak a tizenhatos (hexadecimális) számrendszerben. Miért éppen a tizenhatosban? Azért, mert a kettes számrendszerbeli számok könnyen átírhatók tizenhatosba. Egy négyjegyű bináris szám éppen egy egyjegyű hexadecimális számnak felel meg. A tizenhatos számrendszerbeli számok 0 és 15 közötti számjegyeket tartalmazhatnak, amelyeket a következő karakterekkel jelölik: 0 1 2 3 4 5 6 7 8 9 A B C D E F (Az egyes betűk a következő (alaki) értékeket szimbolizálják: A=10, B=11, C=12, D=13, E=14, F=15) A hexadecimális számjegyek helyiértékeit az alábbi táblázatban foglaltuk össze.
Az informatikában használatos mértékegységek Az informatika világában éppoly fontos szerep jut a mértékegységeknek, mint a többi tudományban. A számítógépen leggyakrabban az adatok mennyiségét és a mozgatásuk gyorsaságát (sebességét) mérjük. A betáplált adatok a lehető legkisebb egységekre lebontva kerülnek tárolásra a számítógépben. Ez a legkisebb adategység a bit (Binary Digit). A bit az információmennyiség alapmértékegysége. A binary digit kifejezés szó szerinti jelentése: kettes számrendszerbeli számjegy. 1 bit az az információmennyiség, amely egy kettes számrendszerbeli számmal kódolható. A bitnek két állapota lehetséges: 0 vagy 1. Egy bitnyi információ nagyon kevés: egy igen-nem válasz, egy fejbólintás, kacsintás. Ennél kisebb mennyiségű információ már nem jelent semmit. A számítógép minden adatot egyesek és nullák sorozataként ábrázolva (kódolva) tárol. A tárolandó adat mennyiségétől függően több-kevesebb bitből álló sorozat szükséges a tároláshoz. A számítógépek a biteket nyolcas csoportokba szervezve kezelik. Egy ilyen nyolcas csoport egy nyolcjegyű kettes számrendszerbeli (bináris) számnak felel meg, a neve pedig Bájt (Byte). A számítógéppel végzett munkánk során több ezer (millió) bájtból álló adathalmazokkal találkozhatunk. Ezért az adatmennyiségek mérésének megkönnyítéséhez a mértékváltásnál megismert előtagokat, (az ún. prefixumokat) használjuk.
Jelátalakítás és kódolás - 1/5 oldal
Az informatikában az ún. bináris prefixumokat használják nagy számok jelölésére (az International Electrotechnical Commission (IEC) 1998-as szabványa alapján). A decimális (SI) prefixumokkal ellentétben (melyek a 10 hatványai) a bináris prefixumok a 2 hatványai. A bináris előtétszó elnevezését úgy kapjuk, hogy az eredeti decimális (SI) előtétszó első két betűjéhez illesztjük a „bi” (binary=bináris) szótagot, a jelét pedig úgy, hogy az első betűt naggyal írjuk, és utána írunk egy kis i betűt. Például: kilo = ezerszeres kibi = 210 = 1024-szeres. Tehát 1 kB = 1000 B 1 KiB (ejtsd: kibibájt) = 1024 B; valamint 1 Kib (kibibit) = 1024 bit = 128 byte. A decimális és bináris előtagokat (prefixumokat) az alábbi táblázatban foglaltuk össze:
Fontos megemlíteni, hogy a bit rövidítésére a b használandó, (bár a tévedés kizárása érdekében ezt kevésszer alkalmazzák), a byte rövidítése pedig B, azaz például a tebibyte TiB alakban rövidíthető. 1998 előtt a számítástechnikában is az SI szabvány decimális prefixumait használták, de bináris értelemben! (k=kilo: 1024-szeres, M=mega: 10242-szeres, G=giga: 10243-szeres, stb.) Az új szabvány szerinti bináris prefixumok elterjedése sajnos lassan halad, és ez jelentős kavarodást okoz a szakmában. Adatátviteli sebesség: Amennyiben az adatokat egyik számítógépről a másikra kívánjuk átjuttatni, fontos jellemző lehet az adatátviteli csatorna sebessége. Adatátviteli sebesség alatt az időegység alatt átvitt adatmennyiséget értjük, amelyet leginkább a bit/s –ban, illetve többszöröseiben (kb/s, Mb/s) szokás megadni. A hagyományos (analóg) telefonvonal adatátviteli sebessége például 56 kb/s, ami azt jelenti, hogy egy másodperc alatt 56000 bitnyi adatot képes átvinni.
Analóg és digitális jelek A "természetes" információhordozók: a hang, a fény, elektromágneses hullámok stb., analóg jelek, amelyek valamely rezgés amplitúdójának időbeni változásaként (függvényeként) írhatók le. Grafikusan ez általában szabálytalan hullámok sorozataként ábrázolható. Az analóg jelekre jellemző, hogy mind időben, mind értéktartományukban folytonosak, azaz végtelen finomságúak. Pl. egy hanghullám - amely nem más, mint a tér egy pontján a levegő nyomásának időbeni változása - minden időpillanatban más és más nyomásértéket jelent. Bármely időintervallum végtelenül sok időpillanatból áll és az egyes időpillanatokban mérhető légnyomásértékek is végtelenül sokfélék lehetnek. Az idő haladtával a tér egy adott pontján a légnyomás folytonosan változik. Ezeket a "természetes" analóg jeleket különféle elektronikai eszközökkel elektromos jelekké alakíthatjuk tárolás és további feldolgozás céljából. A hagyományos analóg eszközök a "természetes" analóg jeleket szintén analóg elektromos jelekké alakítják, (pl. egy mikrofon a hangot elektromos hullámmá) és analóg jelként tárolják (pl. mágnesszalagon). Az analóg jel értéke tehát két szélső érték között gyakorlatilag bármilyen értéket felvehet és ráadásul időben ezt bármikor megteheti. A digitális jel esetében ez nem mondható el. A digitális jel állapota csak meghatározott időpillanatokban változhat meg, ráadásul csak véges sok féle értéket vehet fel. Jelátalakítás és kódolás - 2/5 oldal
Az analóg elektromos jel alkalmatlan a számítógépen való tárolásra és feldolgozásra, hiszen végtelen finomsága miatt nem kódolható véges hosszúságú számokkal, azaz véges számú biten. A számítógépbe vitt analóg elektromos jeleket ezért digitális jelekké kell átalakítani (konvertálni). Manapság azért is igyekeznek minden analóg jelet digitálissá alakítani, és digitális formában feldolgozni, mert az analóg jelek nagyon "sérülékenyek". Minden elektronikai eszköz, amelyen az analóg jel átmegy, hozzáadja a jelhez a maga saját "zaját", ezáltal az eredeti jel torzulást szenved. A digitális jelek ezzel szemben torzulás nélkül tárolhatók, átvihetők és átalakíthatók! Viszont a digitális technika – véges részletessége miatt – nem tudja 100%-os pontossággal tárolni az a természetes környezetből érkező információt. „Vájt fülű” zenészek szoktak arra panaszkodni, hogy a digitálisan tárolt zene „nem HIFI minőségű”. (Ez elméletileg igaz is, de a mintavételezés, kvantálás és kódolás megfelelő megválasztásával az információveszteség olyan mértékben csökkenthető, hogy azt még Tardy tanár úr sem venné észre.)
Az analóg jelek digitálissá alakítása Az analóg-digitális átalakítás (digitalizálás) tulajdonképpen az időben és amplitúdóban folytonos (végtelen finomságú) jelértékek rögzítése véges hosszúságú számok formájában. A digitalizálás során tehát a következő feladatokat kell elvégezni: 1. Megszüntetni a jel időbeli folytonosságát: ezt nevezik mintavételezésnek. 2. Megszüntetni a jel amplitúdóbeli folytonosságát: ezt nevezik kvantálásnak. 3. A kapott digitális jelet számok formájában rögzíteni: ezt nevezik kódolásnak.
A mintavételezés során a folytonos időfüggvényből T időközönként értékeket, "mintákat" veszünk. Ezt valósítja meg a mintavevő áramkör, ami tulajdonképpen egy kapcsoló, amely a bemenetére kötött analóg jelet csak az órajel által meghatározott időpontokban adja az átalakítóra. A jel most már tulajdonképpen csak megadott időnként változik, amit az alábbi ábrákon láthatunk is.
A mintavevő kimenete egy tartóáramkörre kerül, amelynek feladata a mintavételezett jel állapotának tartása addig, amíg a feldolgozása megtörténik. (Értelemszerűen ez az idő nem lehet nagyobb, mint amennyi két mintavételezés között eltelik.) A tartóáramkör kimenete a kvantáló bemenetére csatlakozik. Ennek az egységnek a feladata a most már időben nem folyamatos, de értékeiben még analóg jel digitálissá alakítása. (A minták értékei még végtelen finomságúak lehetnek.) Jelátalakítás és kódolás - 3/5 oldal
A kvantálás során nagyon fontos, hogy milyen finomságú lesz a digitális jel.(Azaz mennyi biten fogjuk utána kódolni.) A bitek száma meghatározza, hogy mennyi különböző értéket lehet megkülönböztetni. Az átalakító minimális és maximális feszültsége közötti tartományt annyi részre osztják fel, amennyi a digitális állapotok száma. Például 8 bites kódolás esetén az állapotok száma 28, vagyis 65536. Ha az átalakító 0 és 10 V közötti analóg jelek fogadására képes, akkor a 10 V-ot el kell osztani 65536-tal és így megkapjuk a legkisebb tárolható feszültségkülönbséget. A digitalizálás utolsó lépése a kódolás, amelynek során a már digitális jel időben és nagyságban diszkrét értékeit kettes számrendszerben rögzítik és tárolják. (A kódolást még követheti tömörítés is, amely lehet veszteség nélküli, vagy veszteséges.) Amint az már az eddigiekből is kiderült, a digitalizálás művelete nem veszteségmentes. Az átalakítás során hasznos információ vész el. Az egyik veszteség a mintavételezéskor keletkezik. Két mintavételezés között az analóg jel minden értéke, változása elvész. Ezt nevezzük mintavételezési hibának. A másik veszteség oka, hogy a kvantálás során az analóg értékeket közelíteni kell véges értékekkel. Ezt nevezzük kvantálási hibának. A mintavételezés során bekövetkező adatvesztés csökkenthető a minták számának növelésével, vagyis a mintavételezés idejének a csökkentésével. Az ún. mintavételezési tétel kimondja, hogy a mintavételi frekvenciát úgy kell megválasztani, hogy az az analóg jelben előforduló legmagasabb frekvenciának minimálisan a duplája legyen. (A mintavételi frekvencia (fmv): azt jelenti, hogy másodpercenként hány mintavétel történik: f mv=1/T.) Pl. a zenei CD-kre rögzíteni kívánt legmagasabb frekvenciájú hang – az emberi fül felső hallhatósági határául elismert 20kHz – több mint kétszeresével (szabványban rögzített 44.1 kHz-el) mintavételezik a rögzítendő hanganyagot.
A kvantálási hiba nagysága attól függ, hogy hány biten tároljuk a digitális jeleket. Minél több bitet használunk, annál kisebb a kvantálási hiba.
Jelátalakítás és kódolás - 4/5 oldal
Példák számrendszerek közötti átváltásra A tízes számrendszerbeli (decimális) számokat kettővel való maradékos osztással tudjuk a legegyszerűbben bináris számmá alakítani. (Vannak más módszerek is, de ez a módszer a legkönnyebben algoritmizálható.) Az átalakítandó számot osszuk el kettővel maradékosan. Az osztásnál jegyezzük fel a maradékot. Ezután a hányados egészrészét újra osszuk el kettővel maradékosan, és a maradékot ismét jegyezzük fel. Folytassuk az egészrész osztását kettővel, amíg hányadosul nullát nem kapunk. (Az utolsó maradékot is jegyezzük fel.) Lássunk erre egy példát! Az átváltandó szám: 8110.
Az így kapott maradékokat lentről felfelé olvasva kapjuk meg a bináris számot: 10100012. (Ez a módszer bármilyen más számrendszerre is működik! A maradékos osztásnál mindig a számrendszer alapszámával kell osztani.) A bináris számokat úgy válthatjuk át tízes számrendszerbe, hogy a bináris szám egyes számjegyeit megszorozzuk a hozzájuk tartozó helyiértékekkel, majd az így kapott értékeket összeadjuk. Például az 100010112 bináris szám decimális értékét az alábbi módon számíthatjuk ki: bináris szám
1
0
0
0
1
0
1
1
helyiértékek
27=128
26=64
25=32
24=16
23=8
22=4
21=2
20=1
decimális szám
1*128+0*64+0*32+0*16+1*8+0*4+1*2+1*1=139
Bináris számrendszerből hexadecimális számrendszerbe történő átváltáskor a bináris szám számjegyeit osszuk a szám utolsó számjegyétől kezdve négyes csoportokra. Ha az első csoportban négynél kevesebb számjegy szerepel, az első számjegy elé annyi nullát írjunk, hogy négy számjegyet kapjunk. Számítsuk ki az egyes csoportok értékeit, majd az így kapott számokat váltsuk át hexadecimális számjegyekké és olvassuk össze. Lássunk egy példát! Az átváltandó szám az 101111110112. Bináris szám négyes csoportokra osztva
0101
1111
1011
A csoport értéke (tízes számrendszerben)
5
15
11
Hexadecimális számjegy
5
F
B
A táblázat utolsó sorát balról jobbra összeolvasva az eredmény tehát: 5FB16
Jelátalakítás és kódolás - 5/5 oldal