NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
1. előadás Adatok, számrendszerek, kódolás
Dr. Kallós Gábor
2014–2015 11
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Tartalom Adat, információ, kód Az információ áramlásának klasszikus modellje
Számrendszerek Út a 10-es számrendszerig 10-es és 2-es számrendszer Műveletek
Átváltások számrendszerek között Átírás 10-es számrendszerbe és -ből
Műveletek logikai adatokkal Kódolás Logikai adatok kódolása Karakterek és szövegek kódolása Egész számok kódolása Nemnegatív számok kódolása és előjeles kódolás
Valós számok kódolása Összetett objektumok kódolása 2
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Adat, információ Az információ áramlásának klasszikus modellje Információ: ismeret, amely (számunkra) egy dologgal kapcsolatban csökkenti a bizonytalanságot, hozzájárul a dolog jobb megismeréséhez (Pontos definíció: Shannon, külön érdeklődőknek: mérnök hallgatók ea. anyaga (C100))
Adat: valamilyen jelsorozat formájában megjelenő ismeret, azaz kódolt és rögzített információ. Az adatot készítőt (rögzítőt) adónak nevezzük. Az adat a felhasználó (vevő/fogadó) rendszer számára értelmezhető és felhasználható. Ugyanazt az adatot más-más rendszer másképp is értelmezheti Példa: Ha egy bitsorozat egy gépi kódú program része, akkor a processzor számára írhatja elő az elvégzendő műveletet, de ha a nyomtató felé továbbítjuk, akkor egy írásjel jelenhet meg a nyomtatón
Jel, jelrendszer: eszköztár (apparátus), amelynek segítségével adatként rögzítjük az információt (a velünk azonos ismeretanyaggal rendelkező felhasználó számára egyértelműen, ő is ugyanezt fogja érteni alatta) Példa: Az „összeszokni” írásjelsorozattal kódolhatjuk azt a folyamatot, amikor egymás tulajdonságait egyre jobban megismerjük és kölcsönösen elfogadjuk. Ez az elemi jelsorozat így azonosítja az előbbi fogalmat. De: ha a felhasználó nem tud magyarul, akkor ez az adat számára felhasználhatatlan lesz. 3
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Adat, információ Kódolás: az adat átalakítása; olyan művelet, amellyel az adott információ elemeihez kódjeleket, szimbólumokat rendelünk. A kódolásnak egyrészt egyértelműnek kell lenni (dekódolhatóság), másrészt hatékonynak (a lehetőleg legrövidebb legyen). A hatékonyság ellen szól az egyszerű kezelhetőség kívánalma, ami többnyire a szabványos méretű kódhosszak alkalmazását jelenti. Ezen túl még azt is előírhatják, hogy hibatűrő, sőt hibajavító legyen. Erre pl. akkor van szükség, ha az adatot csatornán továbbítjuk, és annak az esélye, hogy az adó oldalról küldött kódsorozat nem pontosan érkezik meg a vevő oldalára, nem elhanyagolható Már az információ rögzítése is kódolás! (Sőt, a gondolatok rögzítése is)
4
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Adat, információ Zaj: olyan hatás, amely a csatornán érheti a kódolt jelsorozatot és ennek eredményeképp a jelsorozat torzul Példa: Ha Morse berendezés használatakor a fenti küldeményünkben a 6. írásjel kódja után ritmushiba miatt belépne egy kihagyás (üres hely), akkor a furcsa „összes zokni” küldemény érkezne a vevő oldalára
Csatorna: az a közeg, amelyen keresztül az adat az adótól a vevőig eljut. Mivel egy csatorna csak a saját jelkészletének jeleit tudja továbbítani, az adatot át kell alakítani erre a formára (kódolás), majd a vevő oldalán dekódolni (visszakódolni) kell. Példa: Ha az előbbi szavunkat a Morse-ábécé segítségével átkódoljuk, akkor egy távíró segítségével elektromos jelek formájában továbbíthatjuk
Digitális jel (digit – számjegy): a numerikus információ meghatározott pontosságú leírására használják, és valamilyen számrendszerben számjegyek segítségével adják meg Ha például a valós számokat maximum 16 darab 10-es számrendszerbeli számjeggyel jellemezzük (kódolási pontosság), akkor az irracionális számokat, mint pl. a π értékét, vagy az olyan racionális számokat, mint az 1/9, nem lehet pontosan megadni. Az 1/9 értéket a 9-es számrendszerben viszont pontosan megadhatjuk (lásd számrendszerek).
5
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Számrendszerek A számolás kezdetei A számolással kapcsolatos őskori leletek alapján a történészek a kezdeteket a beszéd kialakulásának idejére teszik (kőkorszak; Kr. e. 500 000 – Kr. e. 15 000) Nem mai módszerek, nincsenek hatékony számolást segítő eszközök, sőt ősünk nem tudott még esetleg írni sem Csak az ujjait vagy a környezetében fellelhető apró tárgyakat használhatta a számolásra Digitus latinul ujj, innét származik az angol digit (számjegy) szó is Tárgyak: kövek, (később) pálcákba vésett rovások, zsinegre kötött csomók (ma is megfigyelhető ősi kultúráknál)
Az írásos formák kialakulása: nem csak a szövegeket kellett leírni (kódolni), hanem a mennyiségi információkat is, hiszen a távolság, terület nagyság, és az idő múlását jelző értékek egyértelmű közlésére szükség volt a mindennapok során Kezdetben a számokat nem önállóan, hanem a fenti módon, valaminek a mennyiségét, nagyságát kifejezve használták
Az absztrakt számfogalom (azaz a számok önálló élete) csak a fejlődés későbbi szakaszában alakult ki. Régészeti leletek alapján ez az időszak a Kr. e. 20 000 környékére tehető. Erre csak közvetett bizonyítékok ismertek, és ezek magyarázatára is többféle elmélet létezik (a történészek körében vita zajlik erről)
Kezdetben a mennyiségek megadására vsz. a mai egy, kettő, sok; később a kevés, majd a semmi (=0) szavainknak megfelelő szavak szolgáltak, és hosszú (akár: több évezredes) fejlődés következményeként alakultak ki a ma ismert kisebb számnevek Így jöttek létre a kisebb természetes számok önálló jelei, majd a különböző alapú számrendszerek 6
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Számrendszerek Út a 10-es számrendszerig Ókori Mezopotámia: 60-as (vegyes) számrendszer, fejlett számolás Örököltük: időmérés, óra, perc felosztás
Ókori Róma: nincs tiszta helyiértékes számrendszer, csak néhány értéket jelöltek önálló jellel 1: I, 5: V, 10: X, 50: L, 100: C, 500: D, 1000: M Ezek additív (összeadás, ill. kivonás) egybeírásával képezték a különböző számértékek kódjait (részletesen lásd: jegyzet) Miért nem helyiértékes rendszer: Igaz ugyan, hogy a nagyobb számot jelentő jelek a felíráskor megelőzik a kisebb értékűeket, de nem függ a képviselt érték attól, hogy a sorban hányadik helyen áll a jel. Pl: a C akkor is száz, ha egyedül áll, és akkor is, ha vannak még utána más jelek is
A 10-es alapú számrendszer az ókori Indiából származik, az arab tudósok közvetítették A 0 is szám, ill. számjegy! Minden valós szám felírható legalább egy alakban a 10-es számrendszerben!
Európában csak az 1200-as évektől kezdett elterjedni Fibonacci (Leonardo Pisano, kb. 1170 – kb. 1250): Utazásai során szerzett matematikai ismereteit összefoglalta, Liber Abaci című könyvében (Könyv a számtanról/abakuszról), ebben bemutatta a hindu-arab számrendszert (arab számjegyeket és a helyiérték fogalmát) Előny: az alapműveletek könnyen elvégezhetők, sőt automatizálhatók De: a 10-es szr. ennek ellenére sokáig nem volt igazán népszerű, idegenkedtek tőle pl. a hamisítás lehetősége miatt (egy nulla könnyen a szám végére írható, a 0 átírható 9-re, 6-ra) 7
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Számrendszerek 10-es számrendszer Ha a 2014,6 értéket a szokásos módon leírjuk, akkor jól tudjuk, hogy ez a számjegyek által képviselt értékek összeadásával jön létre: 2 ⋅ 1000 + 0 ⋅ 100 + 1 ⋅ 10 + 4 ⋅ 1 + 6 ⋅ 1/10 Mindegyik számjegy a 10-es alapszám megfelelő hatványával szorzott értéket képviseli, azaz a számjegy pozíciója megadja az aktuális helyi értéket 2 ⋅ 103 + 0 ⋅ 102 + 1 ⋅ 101 + 4 ⋅ 100 + 6 ⋅ 10–1 Bármelyik pozíción csak a 0, 1, …, 9 számjegyeket használhatjuk, azaz a 10es alapszámnál kisebb egyjegyű számokat adhatunk meg Pontosan 10 különböző számjegy használható
Általánosan, ha az egészrész és a törtrész számjegyeinek száma n és m: ahol a jegyek 0-tól 9-ig választhatók. Helyiértékesen leírva: Műveletek, előjel – tudjuk 8
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Számrendszerek Más számrendszerek A alapú számrendszer Az A pozitív egész szám (A > 1) megfelelő hatványaival szorzott értékek összeadásával Hasonló módon helyiértékes rendszer A 0, 1, …, A – 1 jegyeket használhatjuk (A db különböző jegy) 10-nél nagyobb alapokra: betűk, mint számjegyek (tudjuk: 16-os számrendszer, a további jegyek A, B, C, D, E és F) Előjel (tudjuk)
2-es számrendszer Első precíz matematikai leírás: Gottfried W. Leibniz („Explication de l’Arithmétique Binaire” című könyv) Itt is teljesül: Minden valós szám felírható legalább egy alakban a 2-es számrendszerben Általánosan, ha az egészrész és a törtrész számjegyeinek száma n és m: ahol a 0 és az 1 jegyeket használhatjuk (2 db számjegy) A kettes számrendszer számjegyeit (0 és 1) az angol nevük (binary digit) rövidítéséből bitnek is nevezzük
Műveletek Vigyázni kell! (pl. kettes szr-ben 1 + 1 = 10, lásd még gyakorlat)
9
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Átváltások számrendszerek között Ha ez nem egyértelmű, akkor egyértelműen jelezni kell, hogy egy számot hányas számrendszerben írunk fel Pl: 8310 ≠ 8316, hiszen 8316 = 8 ⋅ 16 + 3
A számok átírását (egyik számrendszerből a másikba) leggyakrabban a tízes számrendszer közvetítésével végezzük el Megadható általános átváltó algoritmus (program)
Átírás tízes számrendszerbe Egyszerűen felírjuk az összeget (kifejtve), amelynek rövidítéséből a szám jelsorozatát kaptuk, és elvégezzük a megfelelő műveleteket
Azokat a számjegyeket, amelyek a tízes rendszerben nincsenek meg, helyettesíteni kell az értékük tízes rendszerbeli alakjával (ha A > 10) További példák, feladatok: jegyzet és gyakorlat A tanult programrendszerekben is léteznek eszközök ilyen átírásokra (pl: Excel, Bin.dec fv. – de az alkalmazás részleteit tisztázni kell, értelmezési tartomány, értékkészlet, paraméterek!) 10
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Átváltások számrendszerek között Átírás tízes számrendszerből Meg kell keresni A azon hatványainak összegét, amely (tízes számrendszerben) b-vel (az átírandó számmal) egyenlő, azaz
Ehhez kell: n, m és az ai értékek (minden ai < A) Külön határozzuk meg az egészrészt és a törtrészt Egészrész Itt olyan Ai-s tagok szerepelnek, ahol i ≥ 0 (Direkt módszer: Leválasztjuk – kivonogatással – a lehető legnagyobb Ai-s tagot, és így haladunk tovább) Észrevesszük, hogy az utolsó tag kivételével minden más tag osztható A-val. Az összeget maradékos osztással A-val elosztva éppen a0-t kapunk maradékul, a hányados pedig
lesz. Ezt A-val újra (maradékosan) elosztva a1-et kapunk maradékul. Ezeket a lépéseket az újabb és újabb hányadosra elvégezve rendre megkapjuk a többi pozitív indexű ai-t. Az osztásokat akkor fejezzük be, ha a hányados nullává válik. 11
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Átváltások számrendszerek között Átírás tízes számrendszerből (folyt.) Törtrész* Itt olyan Ai-s tagok szerepelnek, ahol i < 0 (Direkt módszer: Leválasztjuk – kivonogatással – a lehető legnagyobb Ai-s tagot, és így haladunk tovább) Észrevesszük, hogy ha ezt az összeget A-val szorozzuk, akkor a kapott összeg egy olyan Aalapú számot határoz meg, amelynek egész része éppen a–1, a törtrésze pedig ugyancsak egy törtszám (összeg), csak a számjegyeinek száma az A-alapú alakban eggyel kevesebb, mint az előző törtrészé volt. Ezt a törtszámot A-val szorozva az egészrész a–2, a törtrész egy újabb törtszám, amelynek A-alapú alakjában a–3-tól a–m-ig szerepelnek a számjegyek. A szorzásokat addig folytatjuk, amíg a törtrész nullává nem válik. Előfordulhat, hogy a törtrész sohasem válik nullává (ha a b szám A-alapú alakja végtelen sok számjeggyel leírható törtrészből áll). Ekkor a szorzást addig kell folytatni, amíg elérjük a szükséges pontosságot, ill. elő nem kerül egy olyan törtrész, amelyik már a szorzások eredményeként megjelent. Ettől kezdve ugyanis periodikusan ismétlődni fog minden, a két egyforma törtrész közti szorzat. A periodicitás biztosan bekövetkezik, hiszen az A-alapú alak véges (a szám racionális)
12
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Átváltások számrendszerek között Átírások tízes számrendszerből: az 1848 számra, 2-es, 8-as és 16-os számrendszerbe Eredmények: 111001110002, 34708 és 73816
13
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Átváltások számrendszerek között Átírások tízes számrendszerből:* a 0,4 számra, 2-es, 8-as és 16-os számrendszerbe
Eredmények: Megj.:* Jegyek elhagyásakor a pontosság sérül (visszaváltáskor nem kapjuk már meg az eredeti értéket) Pl. bináris felíráskor az abszolút hiba nagyságrendje az utolsó még feljegyzett bit nagyságrendje 14
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Átváltások számrendszerek között Direkt átváltások számrendszerek között (2-es és 16-os)
15
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Logikai műveletek 19. század közepétől: műveletek végezhetők nemcsak számokkal, hanem más objektumokon is, kialakult az absztrakt algebra. Számítástechnikai szempontból ennek a tudományágnak legfontosabb területe a Boole-algebra, amit George Boole munkássága alapozott meg. A Boole-algebra egy olyan struktúra, amely egy kételemű halmazból és a rajta elvégezhető műveletekből épül fel. A halmaz egyik elemét I(gaz), másik elemét H(amis) értéknek tekintjük. Ezeken az értékeken maximum 4 egyoperandusú és 16 kétoperandusú művelet definiálható. Logikai állítás: igazságtartalma egyértelműen eldönthető (igaz vagy hamis)
Egyváltozós műveletek Negáció (tagadás): NOT(I) = H, NOT(H) = I Igazságtáblázat
16
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Logikai műveletek Kétváltozós logikai műveletek „És” művelet (AND), „Vagy” művelet (OR), „Kizáró vagy” művelet (XOR) Implikáció és ekvivalencia* Igazságtáblázat A
B
A AND B
A OR B
A XOR B
A⇒B
A⇔B
I
I
I
I
H
I
I
I
H
H
I
I
H
H
H
I
H
I
I
I
H
H
H
H
H
H
I
I
Az „És” és a „Vagy” művelet asszociatív és kommutatív (A˄B)˄C = A˄(B˄C) = A˄B˄C és (A˅B)˅C = A˅(B˅C) = A˅B˅C A˄B = B˄A és A˅B = B˅A
Az „És” művelet disztributív a „Vagy” műveletre, illetve a „Vagy” az „És”-re (A˅B)˄C = (A˄C)˅(B˄C), illetve (A˄B)˅C = (A˅C)˄(B˅C)
*Az implikáció és az ekvivalencia kiváltható a többi művelettel A ⇒ B = NOT(A) OR B A ⇔ B = (A AND B) OR (NOT A AND NOT B) 17
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Kódolás Miért kell nekünk ezzel foglalkozni? (Nem leszek programozó!) Vá.: Táblázatkezeléshez szükséges (többek között; bizonyos adattárolási kérdéseket ismerni kell „átlagos” felhasználónak is)! Lásd később: számolási pontosság, Solverrel megoldható feladatok
Mi a jelen eszközeinek használatához nélkülözhetetlen kódolásokat nézzük meg. Alap: a kettes számrendszer, mivel eszközeink elektronikus eszközök. A két különböző bit elektronikus eszközökkel könnyen megjeleníthető például úgy, hogy az 1-nek egy magas, míg a 0-nak egy alacsony feszültségszintet feleltetünk meg
Megkülönböztethetünk fix és változó hosszúságú kódokból álló kódrendszert. A számítástechnikában mindkét rendszert használják. A Boole-algebra objektumainak kódolása (logikai adatok) A legegyszerűbb kódolás, hiszen csak két elemnek kell kódot választani (I, H) De meggondolandó: Hány jelből álljon a kód (bitekből építjük ugyan fel, de a tárolás általában bájtszervezésű) Egyetlen jelből álló (1 bites) kód: az I objektumot 1-gyel, a H objektumot 0-val kódolhatjuk 8 bites kód: az I kódja a 11111111 jelsorozat, a H-é a 00000000 jelsorozat lehet Mindkét esetben van(nak) más lehetőség(ek) is
18
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Karakterek és szöveg kódolása Betűk és egyéb jelek (valamint tetszőleges szöveg) kódolása Fix hosszúságú kódolást használunk, a kód hossza általában 8 vagy 16 bináris jel Ritkábban előfordul a 24-es és 32-es kódhossz is
Mivel 0 és 1 jelekből 8 hosszúságú kódot 256-féleképpen lehet előállítani, ezért ezzel a kódrendszerrel összesen 256 különböző jel kódolható Gondoljuk át, hogy n bit felhasználásával hány különböző jel kódolható!
A jeleket, illetve kódjaikat szabványok határozzák meg A legelterjedtebb szabványok egyike az ASCII (American Standard Code for Information Interchange = amerikai szabványkód információcseréhez) Az első 128 kód sztenderd, azaz állandósult jeleket tartalmaz, a második 128 kód az úgynevezett kiterjesztett jelek kódjai (többféle lehetőség) Itt valósítható meg a nemzeti karakterkészletek kódolása Pl. ISO 8859-1 (Latin-1) és 8859-2 (Latin-2)
De: az ASCII kód lehetőségei nem bizonyultak elégnek egyes népek speciális írásjeleinek a kódolására Másik gyakori kódolási szisztéma: Unicode rendszer, gyakran 3, 4 (esetleg több) bájton Ebbe már pl. a kínai és koreai képírás is „belefér”
Szöveg kódolása: karakterenként + hossz információ (változó hosszú kód) 19
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Karakterek és szöveg kódolása Az ASCII kódtáblázat első (fix) fele A rendszerben összefüggő tömböt alkotnak az angol ábécé nagybetűi és kisbetűi, valamint a számjegyek (második fele: lásd jegyzet)
20
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Számok kódolása Nyilvánvalóan lehetséges jelenkénti/jegyenkénti szöveges (pl. ASCII) kódolással, de ez nem célszerű A műveletvégzést ez a módszer nem támogatja
A számokra ezért saját szabványok érvényesek Több lehetőség, néhányat tekintünk át (további lehetőségek: jegyzet)
Nemnegatív egész számok kódolása Ezeket a számokat számítástechnikában előjeltelen (angolul unsigned) számoknak is szokás nevezni. Kódolásukra 8, 16, 32, 64 bites kódok a legelterjedtebbek. Technikailag: Írjuk fel a kódolandó számot kettes számrendszerben, és (ha szükséges) írjunk eléje annyi nullát, hogy a kód hossza megfelelő legyen A legkisebb ábrázolható szám így a csupa 0, a legnagyobb a csupa 1-es sorozat A legnagyobb kódolható számok: nyolc bittel 28 – 1 = 255, 16 bittel 216 – 1 = 65535, 32 bittel 232 – 1 = 4294967295 Gazdasági és mérnöki számításokhoz 32 vagy 64 bites kódolás elég
Ezzel a módszerrel a megadott intervallumokon kívüli egész számok nem kódolhatók! Pl. a 15 kódja 8 biten 00001111, a 256 már nem kódolható így
21
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Számok kódolása Egész számok kódolása kettes komplemens kóddal Ezeket a számokat számítástechnikában előjeles (angolul signed) számoknak szokás nevezni. Szintén 8, 16, 32, 64 bites kódokat használunk a kódoláshoz. Nyolc bittel a –27 = –128 és 27 – 1 = 127, 16 bittel a –215 = –32768 és 215 – 1 = 32767, 32 bittel a –231 = –2147483648 és 231 – 1 = 2147483647 közé eső számokat kódoljuk
A megadott intervallumokon kívül eső számok ezzel a módszerrel nem kódolhatók! A kódolás menete (most: csak a nyolcbites változat, a többi változat is ugyanígy): Nemnegatív számra mint előbb; vesszük a kettes számrendszerbeli alakot, eléje írunk annyi nullát, hogy nyolc jelből álljon Negatív számra: A számhoz hozzáadunk 28 = 256-ot. Az eredmény 127-nél nagyobb, 256-nál kisebb pozitív szám lesz. Ennek vesszük a kettes számrendszerbeli alakját, ez a negatív számunk kódja. Próbáljuk ki ezt egy kisebb számmal!
A nemnegatív szám kódja mindig nullával, a negatívé mindig eggyel kezdődik (azaz: a kód vezető bitje megadja azt is, hogy kód negatív vagy nemnegatív számot jelent-e) Ezt a bitet szokás előjelbitnek is nevezni (*elterjedt elnevezés, bár helytelen: ezt a bitet nem direkt módon az előjel kódolására használjuk!)
A negatív szám kódját kettes komplemens kódnak is nevezik Innen kapta a nevét a módszer 22
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Számok kódolása Egész számok kódolása kettes komplemens kóddal (folyt.) Kevesebb számolást igénylő módszer a kettes komplemens kód megállapítására Ötlet: a 2n – 1 szám kettes számrendszerben pontosan n darab egyesből áll, nulla nélkül. Ebből a számból könnyű kivonni bármilyen n-nél kevesebb bitből álló pozitív bináris számot; 0-t írunk arra a helyiértékre, ahol a kivonandóban 1 van, és 1-et arra, ahol 0 van. Az eredmény az a szám, amit úgy kapunk, hogy a kivonandóban minden bitet az ellentettjére cserélünk, és annyi 1-gyel kiegészítjük az elején, hogy n jegyű legyen. Ez a szám eggyel kisebb, mint a kivonandó –1-szeresének kettes komplemens kódja, ezért a kettes komplemens eléréséhez 1-et hozzá kell adni. További példák, feladatok: jegyzet és gyakorlat
23
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Számok kódolása Egész számok kódolása kettes komplemens kóddal (folyt.) *Ebben a kódrendszerben két szám összegének kódját megkaphatjuk, ha a kódokat összeadjuk, tehát nem kell az összeadás elvégzéséhez oda-vissza kódolgatni A fentiek szerint „megspórolhatjuk” a kivonást is, ugyanis a – b = a + (–b) tetszőleges a és b esetén
Ha két szám összege vagy különbsége „kilóg” a kódolható számok intervallumából, akkor az összeg/különbség nem állít elő kódot! Túlcsordulás jelenség
Fontos ismernünk (legalább nagyjából) az ábrázolható legkisebb és a legnagyobb számot! Példa: 16 biten →
*További lehetséges probléma az egész számok ábrázolásával (itt nem lép fel): pozitív és negatív 0 Ábrázolható számok
Binárisan
Decimálisan
legnagyobb nem negatív
0111 1111 1111 1111
+32767
legkisebb nem negatív
0000 0000 0000 0000
0
legnagyobb negatív
1111 1111 1111 1111
–1
legkisebb negatív
1000 0000 0000 0000
–32768 24
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Számok kódolása Valós számok kódolása* Ötlet: Minden a valós szám (a 0-t kivéve) tetszőleges A alapú számrdsz.ben egyértelműen felírható a = mAk alakban, ahol |m| az [1, A) intervallumba eső A-alapú valós szám (A-alapú normál alak). m neve mantissza, k szintén A-alapú egész szám, a karakterisztika (exponens). Az A = 2 esetet használjuk fel a kódoláshoz. Megállapítjuk/rögzítjük a kód hosszát, majd kódoljuk az m előjelét, az |m|-et, és a k-t. Az előjel kódolásához elég egy bit (előjelbit; a kód 0, ha a szám pozitív, és 1, ha negatív). |m| kódja: elhagyjuk az egészrész bitjét (ez a bit mindig 1) és a (kettedes) vesszőt. A megmaradó bitsorozatot a végén kiegészítjük nullákkal, ha nem elég hosszú; ill. a végét elhagyjuk, ha hosszabb, mint ahány bitünk van |m| kódolására. k kódolása: valamely egész számos kódolás szerint (pl. többletes kód, 1 bájton csupa 0 sorozat: –127, csupa 1 sorozat: +128). A valós szám kódja: a három kód egymásutánírásával (a sorrend rögzített). Pontosság kérdése: előfordulhat, hogy az |m|-ből el kell hagyni biteket, és emiatt a kódból csak a közelítő értéke kapható vissza
Példa: a –987,56 lehetséges kódolása 32 biten 987,5610 = 11 1101 1011.1000 1100 1100…2 Lebegőpontos alak: 1.1110 1101 1100 0110 0110…*29 Karakterisztika: 910 = 10012 (9 + 127 = 136) Előjel
Mantissza (|m|)
Karakterisztika
1
(1) 1110 1101 1100 0110 0110 011
1000 1000
25
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Számok kódolása Valós számok kódolása (folyt.)* Ilyen típusú kódolások: lebegőpontos kódolási módszerek Azt, hogy a kód milyen hosszú legyen, és ezen belül hány bitet használhatunk a karakterisztika, és hányat a mantissza kódolására, szabványok határozzák meg. Ilyen szabványok például: IEEE 754–1985, IEEE 854–1987, IEEE 1596.5–1993. Ezek négy alaptípust definiálnak.
További érdekes kérdések lebegőpontos kódolásnál Mekkora a tárolható legkisebb és legnagyobb szám? Mennyire pontosan tudunk számolni? (gépi epszilon vagy kód-epszilon; példa: double float →)
26
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Összetett objektumok kódolása Összetett objektumok (pl. képek) kódolása Összetett obj.ok kódolása: több esetben mélyebb ismereteket is igényel, részletesen nem tárgyaljuk Most: (vázlatos) példa arra, hogy egy tágabb értelemben – nem számjegyekkel – kódolt objektum számokkal is kódolható Objektum: kép; eljárás kb.: pixelgrafikus kódolás Első lépés: a képet diszkrét egységek rendszerére bontjuk Ezek az egységek a képpontok (angolul pixel). Minden képpont egy-egy téglalap alakú képrész. A felbontás annál jobb – és ennek következtében a pontokból összerakott kép annál jobban hasonlít az eredeti képhez –, minél több pontból áll. A felbontás jellemzése: egy adott hosszúságegységre (inch) eső pontok száma (angolul: Dot Per Inch; DPI). Mivel a képek kétdimenziósak, és a vízszintes-függőleges irányú pontra bontás nem szükségképpen egyezik meg
A kapott képpontok a képet egy téglalap alakú pontrendszerre bontják. A rendszer pontjait a méretük és a színük jellemzi (a méret egységes, a szín más és más lehet).
Második lépés: kódolás A kép bitekből álló kódja: megadjuk a bitkódját annak, hogy hány pontból áll a kép vízszintesen, hány pontból függőlegesen, majd egyenként kódoljuk a pontok színét is (pl. RGB modellben) A bitkódokat egymás után írva egy 0-1 sorozatot kapunk, és ez lesz a kép kódja (módszer: digitalizálás)
Megj.: Ezzel a kódolási mechanizmussal visszakódoláskor az eredeti képnek egy egyszerűbb változatát kapjuk Más és más felbontásra más és más kód alakul ki ugyanarról a képről, és a visszaalakítás után a képek csak „hasonlítani” fognak egymásra is és az eredeti képre is
27
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Összetett objektumok kódolása RGB modell: minden színt három alapszín összetételével állítunk elő. Ezek a színek: vörös (Red), zöld (Green) kék (Blue). 16 bites színkód esetén a vörös összetevő kódolására 5, a zöldére ugyancsak 5, a kékre 6 bitet szokás használni, így 65536-féle szín kódolása lehetséges. Ez az emberi szem teljesítőképességét figyelembe véve egy hétköznapi kép kódolására bőségesen elegendő
A kép kódjában általában még bizonyos kiegészítő vagy járulékos információt is kódolnak (pl. hibajavításra). Ez a kód végső méretét minimális mértékben megnöveli. RGB színkeverés → (Kisugárzott és elnyelt fények)
Külön köszönet: Pukler A. és dr. Szörényi M. kollégáimnak
28
NGB SZ003_8 – Informatika I.
Széchenyi István Egyetem
Zh kérdés minták Töltsük le az Impera programot (impera.sze.hu) (Offline használatnál: Töltsük le a megfelelő feladatlapot)
Indítsuk el a Beszámoló.exe fájlt Ha online dolgozunk: Lépjünk be és válasszuk ki a beszámolót Ha offline dolgozunk: Nyissuk meg az Imperában a korábban letöltött feladatlapot Beadáskor elemezzük az eredményünket (!)
29