Bitek, bájtok és barátaik

Üdvözöllek a Számítógépekről szóló és című sorozatomban. A bemutatkozástól és egyéb formaságoktól már eltekinthetünk; kezdjük is!

Ezen az oldalon a számítógépek elméleti alapjairól lesz szó. Talán ez a legunalmasabb része, de hát ez az egész alapja; nincs mese, tudni kell. Hogy bármit is megértsünk a számítógépekkel kapcsolatban, először biteket és az erre épülő magasabb egységeket kell megérteni. Ezek nagyjából úgy épülnek egymásra, mint a nyelvtanban a hangok, szavak, mondatok stb.

Bitek

A digitális információ legalapvetőbb egysége a bit. Végtelenül egyszerű, ugyanis egy bit kétféle lehet: 0 vagy 1. Nagyon praktikus, mert:

  • Nem egy bizonytalan fizikai mennyiség hordozza az információt (egy rádiójel frekvenciája vagy amplitúdója, egy szalag mágnesezettsége stb.), így nem torzul az információ, ha kicsit pontatlan a jel.
  • Egy sor átalakítókészülék helyett egyetlen univerzális eszközzel – a számítógéppel – bármire használhatjuk, bármilyen információt tárolhatunk és továbbíthatunk vele.

A számítógépedben minden számítás és művelet során bitekkel dolgozik a számítógép, minden adatot bitekben tárol, és minden információt biteken keresztül közvetít.

Bájtok

Az egyesek és nullák viszont még akkor se túl praktikusak önmagukban információ tárolására, ha ezermilliárd darabot rakunk belőlük egymás után. Ezért találták ki a bájtokat, a következő információs egységet. Ezek nyolc bitből állnak, és így 28, azaz 256 lehetséges értékkel bírnak (0-tól 255-ig).

A bitek bájtokra osztása nem azt jelenti, hogy a fenti ábrán látható módon, vagy a távírójelekhez hasonlóan szünetet hagyunk két bit közt, egyszerűen csak “fejben” nyolcas csoportokra bontjuk a biteket, és ezeket önálló értékként kezeljük.

A bájtokat és úgy általában a számítástechnikában a különböző értékeket előszeretettel írják fel tizenhatos számrendszerben, például egy bájtot 0-tól FF-ig. Ezt külön jelölni is szokás azzal, hogy a szám elé írjuk: “0×”, és minden számot ugyanannyi helyiértékkel írunk le. Pl. a bájtok értéke 0×00-tól 0×FF-ig tart.

Adatformátumok

Bájtokkal már sokkal könnyebb információt tárolni. Ha például szöveget tárolunk, akkor az egyik alapvető módszer az, hogy egy bájt egy konkrét értékéhez társítunk egy karaktert. Néhány kitüntetett érték (például a 0) pedig speciális jelentéssel bírhat, például, hogy vége van a szövegnek. Addig ugyanis oké, hogy van egy memóriakártyánk, rajta mindenféle számok, amik karaktereket jelölnek, de ha a memóriakártyának nem csak egy darab szöveg tárolása a célja, akkor azt is jelölni kell valahogy, hogy az adott szöveg egy adott pontig tart, onnantól pedig valami más információt tárolnak a bájtok.

A táblázatban látszik, hogy két darab információt (két szöveg: “Hello” és “szia”), hogyan tudunk biteket használva eltárolni. Először bájtokká alakítjuk, majd a bájtokat egy 0-bájttal elválasztva tároljuk. Visszafelé olvasva a táblázatot pedig a biteket nyolcasával bájtokká alakítjuk, azt pedig szöveggé.

Információ: H e l l o (szöveg vége, új szöveg) s z i a (szöveg vége) (itt nincs semmi…)
Bájt értéke: 72 101 108 108 111 0 115 122 105 97 0 0 0 0 0 0
Bitek értéke: 0100 1010 0110 0101 0110 1100 0110 1100 0110 1111 0000 0000 0111 0011 0111 1010 0110 1001 0110 0001 0000 0000 0000 0000 0000…
Amit a memória valójában tartalmaz: 010010100110010101101100011011000110111100000000011100110111101001101001 0110000100000000000000000000000000000000…

Ez csak egy példa. A helyzet ennél jóval bonyolultabb, még szövegek (hát még komplex információk) esetében is. A szövegek tárolásáról, az úgynevezett karakterkódolásról mindjárt mesélek még.

Az előbbi lenne tehát egy adatformátum. Ha definíciót akarunk adni neki, akkor azt mondhatjuk, hogy egy adatformátum segítségével a bájtokat (biteket, digitális jeleket, ahogy nevezzük) hasznos információvá fordítják le. Az adatformátum gyakorlatilag egy szabály(rendszer), vagy ha úgy tetszik függvény, ami egy bájtsort tetszőleges információvá (szöveg, kép, hang, dokumentum stb.) fordít le – és visszafelé is megteszi ugyanezt. Ha ezek nem lennének, akkor a számítógépek számára se jelentenének többet az egyesek és nullák, mint a Kisavas zenekar számára.

[youtube=http://www.youtube.com/watch?v=6tGTORdeFR0&w=425&h=350]

Tehát adatformátum például minden fájlformátum, vagy az úgynevezett fájlrendszer, aminek a segítségével tetszőleges tartalmú fájlokat tudunk egy adathordozón tárolni, egy konkrét adatformátumban van minden számítógépes program, ezt a formátumot az operációs rendszer és a processzor tudja olvasni és futtatni, és így tovább.

Karakterkódolás

Az adatformátumokat bemutató példában az volt, hogy a szövegeket úgy tároljuk, hogy minden karaktert – köztük pár speciális jelentésűt) egy bájthoz társítunk. De bájtból csak 256-féle van. Eredetileg az angol ábécé betűinek, és a legfontosabb írásjelek, karakterek leírására ennyi elég is volt. De ha a világ többi írását is digitálisan akarjuk tárolni, akkor az “1 karakter = 1 bájt”-nál összetettebb adatformátumokra van szükség.

Ezeket hívják karakterkódolásnak vagy kódlapnak. Azért foglalkozunk velük, mert gyakran merülnek fel velük problémák: az, amikor “rosszul jelennek meg az ékezetes betűk”. Amit tényleg mindenkinek tudni kell, hogy ilyenkor rossz karakterkódolással próbálja meg a rendszer a bájtokat betűkké lefordítani – de azért nem árt, ha meg is értjük a karakterkódolásokat.

Nem összetévesztendő a betűtípussal. A betűtípus egy olyan adatformátum, ami azt határozza meg, hogy egy adott karakter (amit amúgy valamilyen karakterkódolással kell tárolni), vizuálisan hogyan jelenik meg a képernyőn (pontosan milyen az alakja, talpas betű-e stb.)

Az egyik karakterkódolási mód az, hogy egy bizonyos ábécének (vagy egy bizonyos nyelvcsalád ábécéinek) a betűit préseljük be 256-féle bájtba. A nyugat-európai nyelvek esetén ez a latin ábécét és pár ékezetes betűt jelenti. A közép-európai nyelvekkel ez majdnem teljesen egyezik. A kódlapok jó részénél – köztük az imént említetteknél – az egyszerű angol (latin) betűket jelölő bájtok ugyanazok, ezért nem is szokott velük gond lenni, még ha rossz is a karakterkódolás.

Ha még azt is tudjuk, hogy a nem latin-alapú nyelvek, és a különböző ipari szabványok is csak bonyolítják a karakterkódolások világát, akkor már nagyon sokat tudunk.

Aztán van a Unicode karakterkódolás, amiről annyit kell tudni, hogy praktikusan a világ összes írásjelét és karakterét le lehet tudja írni. Ezen belül a legnépszerűbb és talán legpraktikusabb az UTF-8 karakterkódolás.

Pár konkrét kódolás, amiről jó, ha hallasz (távirati stílusban):

Karakterkódolás neve Főbb tulajdonságai Hasznos tudnivalók
ASCII vagy US-ASCII Legalapvetőbb karakterkódolás. Angol ábécé, egyszerű írásjelek. Ékezetes betűkkel nem tud mit kezdeni, de a többivel nincs gondja.
ISO-8859-2, ISO-latin-2 vagy Közép-Európai ISO
A szabványosított közép-európai kódolás. (*ISO = Nemzetközi Szabványügyi Szervezet) Magyar ábécé ezzel jeleníthető meg tökéletesen.
ISO-8859-1, ISO-latin-1 vagy Nyugat-Európai ISO A szabványosított nyugat-európai kódolás. Majdnem teljesen egyezik az előzővel. Ő és Ű helyett az Õ és Û karaktereket jeleníti meg. Ha az említett magyar betűk egy igénytelenül elkészített betűtípusból hiányoznak, akkor is általában használhatjuk ennek a kódlapnak a karaktereit.
Windows-1252 vagy Közép-európai DOS A Windows által sok helyen alapesetben használt kódolás. A fentebbi ISO-latin-1 egyik verziója. Ugyanaz, mint az ISO-latin-1-nél. Néhány spéci karakterben tér csak el tőle.
Unicode kódlapok (többféle kódolás, pl. UTF-8, UTF-16) Egy kódoláson belül gyakorlatilag minden karakter használható. Többféle verzióban létezik. Minden karaktert ismer, így ha vele kapcsolatban probléma van, az csak az lehet, hogy egy Unicode szöveget más kódolással próbálsz megnyitni
UTF-8 (ez is Unicode) Unicode, de technikailag sokban egyezik a többi kódolással. Az egyik legnépszerűbb, legpraktikusabb karakterkódolás, szinte mindenhol tökéletesen működik.
Vastag betűvel van szedve az a kódolás, ami az összes magyar ékezetes betűt tudja kezelni.

Protokollok

Külön megemlítendő a protokoll fogalma. Alapvetően ez egy adatformátum, de akkor használjuk, ha több számítógépes rendszer kommunikál egymással – ellentétben azzal, amikor egy számítógép önmagába zárkózva dolgozik mindenféle adatformátumokkal. Egy protokoll sokkal aktívabb dolog egy adatformátumnál.

Hogy lehet egy pár bájt “aktív”? És mi köze van ennek ahhoz a protokollhoz, amit a kormánynak kell követnie, ha a német külügyminiszter Budapestre érkezik?

A magyarázat az, hogy egy protokollátogatás és két számítógépes rendszer közti adattovábbítás közt nagyon is sok a hasonlóság. Amikor a miniszter úr Ferihegyen landol, akkor nem elég, hogy ott van a kijárat felirat, majd azt követi, és fog egy taxit – külön kell fogadni, kezet kell rázni vele, tolmácsolni kell, ki kell elégíteni a speciális igényeit, stb. Ha nem ez történik, az mindenféle szerencsétlen félreértésekhez vezethet.

Amikor két számítógépes rendszer (számítógép, szerver, mobiltelefon, wifiállomás stb.) veszi fel a kapcsolatot – és tartja is fenn azt -, akkor az a két rendszer ugyanolyan idegen egymásnak, mint két szuverén állam, és így amikor kapcsolatot teremtenek, ezt egy előre megbeszélt rituálé szerint teszik, különben vagy nem fogják érteni, vagy félre fogják érteni az egymásnak küldött bájtokban kódolt információt.

Ezt a rituálét hívják protokollnak, és változik attól függően, hogy éppen milyen eszközök milyen céllal kommunikálnak, de a kommunikáció menete az mindig egy a résztvevő rendszerek számára

Ezekről bővebben majd az internet kapcsán lesz szó.

***

Ha ezzel kapcsolatban bármi kérdés van, írjátok meg a hozzászólások közt.

A következő részben arról lesz szó, hogy mi van fizikailag egy számítógépben: Hardverek →

Leave a Comment

Your email address will not be published. Required fields are marked *