A számok újraértelmezése
Most, hogy az előző kis intermezzo után tudjuk a legfontosabb kérdésre a választ, végre elkezdhetünk a lényegtelenebb dolgokkal is foglalkozni. Remélem annak aki még nem olvasta Douglas Adams klasszikusát kellő kedvet csináltam hozzá.
Ha a számítógép valóban csak számokkal képes dolgozni, akkor mégis hogyan láthatunk szöveget, grafikát, hogyan hallgathatunk rajta zenét és hogyan használhatjuk olyan sokrétűen és szivároghatott be az élet szinte minden területére? A válasz tulajdonképpen benne volt az információ alapegységéről szóló cikkben, ahol pedzegettem, hogy a két állapot jelentése valójában megegyezés kérdése. Ugyanez a helyzet a számokkal is. Az, hogy a 42 kinek mit jelent csak attól függ, hogy miben egyeztünk meg és éppen milyen környezetben használjuk. Tehát például szöveget úgy kreálhatunk a számokból, hogy a számokhoz betűket rendelünk. Az egyik ilyen egymáshoz rendelési tábla az úgynevezett ASCII, amely mi más lehetne mint egy mozaikszó: American Standard Code for Information Interchange. Az alap táblázat 0-tól 127-ig definiál különböző karaktereket (pl. az ABC nagy betűi 65-től indulnak, míg a kisbetűk 97-től) és műveleteket, majd mikor Amerikában rájöttek, hogy a kontinensen kívül is létezik élet kibővítették és 128-tól 255-ig is rendeltek a számokhoz "dolgokat". Sajnos a kibővített táblázat sem tartalmaz elegendő karakterhozzárendelést ahhoz, hogy pl. a magyar ABC-ben szereplő karaktereket is tartalmazza. Az ASCII-n kívül rengeteg egyéb hozzárendelési táblázat született, melyeknek különböző hangzatos fantázianeveket, majd késbőbb mikor próbálták az őskáoszt rendszerezni különböző szabványneveket adtak. Hogy neked is legyen némi fogalmad erről az őskáoszról néhány ilyen karakter kódolási tábla elnevezést idebiggyesztek, hogy ha bővebben érdekel a téma legyen némi kiindulási alapod:
- CP437; a CP mi más lenne, mint egy rövidítés: Code Page. Ezekből volt jópár: CPxyz formában lehet őket keresni, számunkra a 852-es lehet érdekes, hiszen ez volt a DOS alatt a Central European nyelvek által használt karakterek megfeleltetése.
- ISO8859-x (ahol x megy 1-től 16-ig, itt a 2-es ami számunkra érdekes lehet)
- Windows-125x (ahol az x megy 0-tól 8-ig. Itt az előkelő 0-ás ami a magyart is tartalmazza)
Manapság viszonylag ritka esetben kell csak a karakterkódolással törődni, mert azóta megszületett az úgynevezett Unicode Standard, mely többek között definiálja az Unicode Transformation Format-ot is (vagy ahogy a legtöbben ismerik UTF). Az UTF-8 (esetleg láthatod UTF8 formában is a kötőjel nélkül) a cikk írásakor a domináns karakterkódolási forma. Míg a fentebb megnevezett tábláknál 1 byte = 1 karakter viszony áll fenn az UTF-8 változó "szélességű" megfeleltetést alkalmaz, így előfordulhat, hogy 1 karakter az 1 byte, de akár 4 byte is lehet. Ezzel szerencsére nekünk semmi dolgunk nem lesz a későbbiekben, a programozási nyelvek kiválóan kezelik az UTF8-at. Amit még érdemes megemlíteni az UTF-8 kapcsán, hogy az első 128 számhoz rendelt karakterek megegyeznek az ASCII táblával, így minden ASCII-nek megfelelő szöveg egyben UTF-8 szöveg is.
Szuper, már tudjuk hogyan lesz a számokból szöveg egy viszonylag egyszerű megfeleltetéssel. De mi a helyzet a grafikával? A képrenyőn megjelenő képek képpontokból (pixelekből) állnak. A legegyszerűbb grafikus formátum a fekete-fehér, azaz 2 színű kép (ide először 1 színűt írtam, mert amikor a hagyományos módon egy ilyen képet rajzolsz, akkor 1 színt használsz, pl. a feketét és azzal rajzolsz egy fehér lapra, ami viszont valójában a másik "szín", illetve inkább a szín hiánya. Na mindegy, nem ragozom tovább, köszönöm a korrekcíót Álmosnak). Mondjuk ki szépen lassan ezt a két szót: fekete-fehér. Hasonlít ez valamire? Persze, a BIT-re. Láttuk, hogy hogyan lehet a számokat binárisan felírni így már csak ezt kell továbbvinni és meg is van, hogy a számokból hogyan alkothatunk fekete-fehér képeket: a 0 azt jelenti nincs pixel az 1 pedig azt, hogy van. Az ilyen képeken egy pofon egyszerű NOT műveletet elvégezve megkaphatjuk annak inverzét (negatívját). Kezdenek értelmet nyerni a bitműveletek IS, ugye?
A fekete-fehér képeken kívül sok egyéb képformátum létezik és ennek a bejegyzésnek nem célja az összes ismertetése, csak ízelítő annak bemutatására, hogy a számokat miként tudjuk más és más módon értelmezni.
Mit tanultál ebben a leckében?
- azt, hogy a számok nem csak egyszerűen számok, hanem tulajdonképpen akármit kihozhatunk belőlük, csak rajtunk múlik, hogy miként értelmezzük őket
- annak ellenére, hogy a számítógép csak a számokat ismeri a programozási nyelvek el fogják nekünk intézni, hogy ne csak számokban gondolkozzunk