<<

Sz´am´abr´azol´as ´es karakterk´odol´as (jegyzet)

B´erci Norbert 2014. szeptember 15-16-i ´ora anyaga

Tartalomjegyz´ek

1. Sz´amrendszerek1 1.1. A sz´amrendszer alapja ´esa sz´amjegyek...... 2 1.2. Alaki- ´es helyi´ert´ek...... 2 1.3. Eg´esz sz´amok le´ır´asa...... 2 1.4. Nem eg´eszsz´amokle´ır´asa...... 3 1.5. Atv´alt´assz´amrendszerek´ k¨oz¨ott...... 3 1.6. Feladatok...... 3 1.7. Sz´amrendszerek pontoss´aga...... 4

2. M´ert´ekegys´egek4

3. G´epi sz´am´abr´azol´as4 3.1. Nem negat´ıv eg´esz sz´amok ´abr´azol´asa...... 5 3.2. Negat´ıv eg´esz sz´amok´abr´azol´asa...... 5 3.3. Eg´esz sz´amok adat´abr´azol´asainak ¨osszehasonl´ıt´asa...... 7 3.4. Eg´esz sz´amok ´abr´azol´asihat´arai´espontoss´aga...... 7 3.5. A lebeg˝opontos sz´am´abr´azol´as...... 9 3.6. Az IEEE 754 lebeg˝opontos sz´am´abr´azol´as...... 13 3.7. Numerikus matematika...... 14

4. Karakterek ´esk´odol´asuk 15 4.1. Karakterek ´es karakterk´eszletek...... 15 4.2. Karakterek k´odol´asa...... 15 4.3. Klasszikus k´odt´abl´ak...... 15 4.4. A ...... 16 4.5. Sz¨ovegf´ajlok...... 17 4.6. Feladatok...... 17

1. Sz´amrendszerek

A sz´amrendszer [numeral system - nem numeric system!] a sz´am(mint matematikai fogalom)´ırott form´abant¨ort´en˝omegjelen´ıt´es´ere alkalmas m´odszer. Ebben a r´eszben a helyi´ert´eken (poz´ıci´on) alapul´osz´amrendszereket t´argyaljuk. L´eteznek nem poz´ıci´onalapul´osz´amrendszerek is, ilyenek p´eld´aul a sorrendis´egen alapul´or´omai sz´amok, de ezekkel a tov´abbiakban nem foglalkozunk.

0Revision : 60 (Date : 2014 − 09 − 2011 : 16 : 32 + 0200(Sat, 20Sep2014))

1 1.1. A sz´amrendszer alapja ´es a sz´amjegyek A helyi´ert´eken alapul´osz´amrendszerek k´etlegfontosabb param´etere a sz´amrendszer alapja [base, radix] ´es az egyes poz´ıci´okba ´ırhat´osz´amjegyek [digit]. Ezek nem fuggetlenek:¨ a sz´amrendszer alapja meghat´arozza az egyes poz´ıci´okba ´ırhat´osz´amjegyek maximum´at: ha a sz´amrendszer A alap´u, akkor a legkisebb felhaszn´alhat´osz´amjegy a 0, a legnagyobb az A − 1. 1.1.1. p´elda. A t´ızes sz´amrendszerben a 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 sz´amjegyek szerepelhetnek, a nyolcas sz´amrendszerben a 0, 1, 2, 3, 4, 5, 6, 7 sz´amjegyek k¨ozul¨ v´alaszthatunk, m´ıg a kettesben a 0, 1 a k´etlehets´eges sz´amjegy. T´ızn´elnagyobb alap´usz´amrendszerek eset´eben a sz´amjegyek halmaz´at9 ut´anaz ABC bet˝uivel eg´esz´ıtjuk¨ ki. A kis ´esnagybet˝ukk¨oz¨ott ´altal´aban nem teszunk¨ kul¨ ¨onbs´eget, b´aregyes nagy alap´usz´amrendszerekn´el erre m´egis szuks´eglehet.¨ 1.1.2. p´elda. A tizenhatos sz´amrendszerben haszn´alhat´o sz´amjegyek”: 0, 1, 2, 3, 4, 5, 6, 7, 8, ” 9, a, b, c, d, e, f (vagy 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F). Ha az a sz¨ovegk¨ornyezetb˝olnem egy´ertelm˝u, a sz´amrendszer alapj´atsz¨ogletes z´ar´ojelben a jobb als´oindexbe t´eve jel¨olhetjuk.¨ P´eld´aul: 5221[10], 726[8] vagy 80[16]. A j´olismert t´ızes alap´u decim´alis sz´amrendszeren k´ıvul¨ az informatik´abana leggyakrabban haszn´altak a k¨ovetkez˝ok: a kettes alap´u bin´aris, a nyolcas alap´u okt´alis ´esa tizenhatos alap´u hexadecim´alis. Az el˝oz˝oekben eml´ıtett, indexben t¨ort´en˝osz´amrendszer megad´asmellett bin´a- ris sz´amrendszer jel¨ol´es´ere haszn´alatos a b postfix, okt´alis esetben egy kezd˝o0 szerepeltet´ese, hexadecim´alis sz´amok eset´ena 0x, 0X prefixek vagy a h postfix. Az informatik´abanezeket a jel¨ol´eseket haszn´aljuk a legink´abb. P´eld´aul: 100b (bin´aris), 065 (okt´alis), 0x243 (hexadecim´alis), 0X331 (hexadecim´alis), 22h (hexadecim´alis). Ha sem a sz´amel˝ott, sem ut´ana,sem az index´eben nincs jel¨olve, akkor decim´alis sz´amrendszerben ´ertelmezzuk¨ a le´ırtakat.

1.2. Alaki- ´eshelyi´ert´ek Egy adott sz´amrendszerben le´ırt sz´ameset´eben egy sz´amjegy ´ert´eke egyenl˝oa sz´amjegy alaki ´ert´ek´enek ´es helyi´ert´ek´enek szorzat´aval. A sz´amjegy alaki ´ert´eke a sz´amjegyhez tartoz´o´ert´ek, a helyi´ert´ek pedig a sz´amrendszer alapj´anak a poz´ıci´oszerinti hatv´anya. A 0, 1,..., 9 eset´eben az alaki ´ert´ek egy´ertelm˝u, a bet˝ukkel kieg´esz´ıtett esetben ezek: a=10, b=11, c=12, d=13 stb. 1.2.1. p´elda. A t´ızes sz´amrendszerben fel´ırt 32 sz´ameset´eben a 3 helyi´ert´eke 101 = 10, mivel az jobbr´ola m´asodik poz´ıci´onszerepel (´es a helyi´ert´ekeket a nulladik hatv´anyt´olind´ıtjuk), ´ıgy ebben a p´eld´aban a 3 sz´amjegy ´ert´eke: 3 · 101 = 3 · 10 = 30. 1.2.2. p´elda. A t´ızes sz´amrendszerben fel´ırt 32 sz´ameset´eben a 2 helyi´ert´eke 100 = 1, mivel az jobbr´olaz els˝opoz´ıci´onszerepel (´esa helyi´ert´ekeket a nulladik hatv´anyt´olind´ıtjuk), ´ıgyebben a p´eld´aban a 2 sz´amjegy ´ert´eke: 2 · 100 = 2 · 1 = 2.

1.3. Eg´esz sz´amok le´ır´asa

Eg´eszsz´amokat ´altal´anos esetben az anan−1 . . . a1a0 alakban ´ırhatunk fel, ´es az ´ıgyfel´ırt sz´am ´ert´eke (A alap´usz´amrendszert felt´etelezve): n n−1 1 0 (an · A ) + (an−1 · A ) + ··· + (a1 · A ) + (a0 · A ) ami nem m´as,mint a le´ırt sz´amjegyek (az el˝oz˝oekben megismert m´odon kisz´amolt) ´ert´ekeinek ¨osszege. 2 1 0 1.3.1. p´elda. Trivi´alis p´elda: 405[10] = 4 · 10 + 0 · 10 + 5 · 10 = 400 + 5 2 1 0 1.3.2. p´elda. 405[8] = 4 · 8 + 0 · 8 + 5 · 8 = 256 + 5 = 261 6 5 4 3 2 1 0 1.3.3. p´elda. 1001101[2] = 1 · 2 + 0 · 2 + 0 · 2 + 1 · 2 + 1 · 2 + 0 · 2 + 1 · 2 = 64 + 8 + 4 + 1 = 77 1.3.4. p´elda. 0xA3 = 10 · 161 + 3 · 160 = 10 · 16 + 3 · 1 = 163 A negat´ıveg´esz sz´amokat ´ugy ´ırjuk le, hogy abszol´ut ´ert´ekuket¨ az el˝oz˝´odonfel´ırjuk valamely sz´amrendszerben, majd el´e − jelet teszunk¨ (b´arezt a jel¨ol´est a t´ızes sz´amrendszeren k´ıvul¨ a gyakorlatban nem alkalmazzuk).

2 1.4. Nem eg´esz sz´amok le´ır´asa Az eg´esz sz´amokn´almegismert fel´ır´asim´odszert kiterjeszthetjuk¨ ´ugy, hogy a helyi´ert´ekek meg- ad´as´an´alnem ´allunk meg a nulladik hatv´anyn´al, hanem folytatjuk azt a negat´ıv hatv´anyokra is, ´ıgy lehet˝os´egunk¨ ad´odik nem eg´esz sz´amok le´ır´as´ara. Altal´anos´ esetben teh´atennek alakja: anan−1 . . . a1a0a−1 . . . a−k, ´esaz ´ıgy fel´ırt sz´am´ert´eke (A alap´usz´amrendszert felt´etelezve):

n n−1 1 0 −1 −k an · A + an−1 · A + ··· + a1 · A + a0 · A + a−1 · A + ··· + a−k · A

Annak ´erdek´eben, hogy a mindk´et v´eg´en (eg´esz- illetve t¨ort r´esz) tetsz˝olegesen b˝ov´ıthet˝ofel´ır´as egy´ertelm˝ulegyen, ennek a k´etr´esznek a hat´ar´atjel¨oljuk¨ tizedesvessz˝ovel. Mi a magyar he- lyes´ır´assal ellent´etben, a nem eg´esz sz´amokfelsorol´as´anakk¨onnyebb olvashat´os´aga´erdek´eben a tov´abbiakban a tizedespontos1 jel¨ol´est fogjuk alkalmazni. (Pl. 1,6, 2,4, 5,9 helyett 1.6, 2.4, 5.9)

2 1 0 −1 −2 1.4.1. p´elda. Trivi´alis p´elda: 405.23[10] = 4 · 10 + 0 · 10 + 5 · 10 + 2 · 10 + 3 · 10 = 1 1 4 · 100 + 5 · 1 + 2 · 10 + 3 · 100 2 1 0 −1 −2 1 1 1.4.2. p´elda. 405.23[8] = 4 · 8 + 0 · 8 + 5 · 8 + 2 · 8 + 3 · 8 = 4 · 64 + 5 · 1 + 2 · 8 + 3 · 82 = 2 3 19 256 + 5 + 8 + 64 = 261 64 = 261.296875 6 5 4 3 2 1 0 −1 −2 1.4.3. p´elda. 1001101.01[2] = 1·2 +0·2 +0·2 +1·2 +1·2 +0·2 +1·2 +0·2 +1·2 = 1 64 + 8 + 4 + 1 + 4 = 77.25 Negat´ıv nem eg´esz sz´amokle´ır´asaa negat´ıveg´esz sz´amok le´ır´as´ahoz hasonl´oana − jel sz´amel´e ´ır´as´aval t¨ort´enik (amit szint´en csak a t´ızes sz´amrendszer eset´eben haszn´alunk).

1.5. Atv´alt´as´ sz´amrendszerek k¨oz¨ott Az adott sz´amrendszerb˝olt´ızes sz´amrendszerbe v´alt´astaz 1.3 ´es az 1.4 r´eszek p´eld´aiban hallgat´o- lagosan m´arbemutattuk. A ford´ıtott ´atv´alt´asra nem t´erunk¨ ki (a m´odszer k¨onnyen kital´alhat´o, l´asd 1.6.5. feladat). Az ´atv´alt´asnagym´ert´ekben egyszer˝us¨odik, ha bin´arisb´olokt´alis vagy hexadecim´alis sz´am- rendszerbe kell ´atv´altani: egyszer˝uen h´armas´aval (okt´alis esetben) vagy n´egyes´evel (hexadecim´a- lis esetben) kell a bin´aris sz´amjegyeket csoportos´ıtani, ´es az ´ıgy k´epzett csoportokat ´atv´altani:

1.5.1. p´elda. 1010111001[2] = 001 010 111 001[2] = 1271[8] Az ´atv´alt´asford´ıtott ir´anyban is hasonl´oanegyszer˝u:az egyes okt´alis vagy hexadecim´alis sz´am- jegyeket kell ´atv´altani ´esaz ´ıgy kapott h´armas illetve n´egyes bin´aris csoportokat egym´asut´an ´ırni:

1.5.2. p´elda. 2b9[16] = 0010 1011 1001[2] = 1010111001[2] Okt´alisb´olhexadecim´alisba vagy decim´alisb´olhexadecim´alisba illetve ford´ıtva a bin´aris sz´am- rendszert k¨ozbeiktatva is ´atv´althatunk ezzel a m´odszerrel:

1.5.3. p´elda. 2b9[16] = 0010 1011 1001[2] = 1010111001[2] = 001 010 111 001[2] = 1271[8]

1.6. Feladatok

1.6.1. feladat. 1010111001[2] = ?[8] = ?[16]

1.6.2. feladat. 54[8] = ?[16]

1.6.3. feladat. 962[10] = ?[8] = ?[16]

1.6.4. feladat. 9a2d[16] = ?[2] = ?[8] = ?[16]

1Ha nagyon pontosak akarunk lenni, akkor tizedespontr´olcsak a t´ızessz´amrendszer haszn´alata eset´en besz´el- hetn´enk, bin´arisesetben ink´abb bin´aris pontr´olvan sz´o(´eshasonl´oan okt´alis,hexadecim´alis stb. esetben).

3 1.6.5. feladat. Adjunk algoritmust (m´odszert) decim´alisb´ola) okt´alis-, b) hexadecim´alis sz´am- rendszerbe t¨ort´en˝ok¨ozvetlen (teh´atnem a bin´aris sz´amrendszer k¨ozbeiktat´as´aval t¨ort´en˝o)´atv´al- t´asra!

1.6.6. feladat. Minden racion´alis sz´am(t¨ort) le´ırhat´ob´armilyen alap´usz´amrendszerben v´eges sz´amjegy felhaszn´al´as´aval? A http://www.exploringbinary.com/binary-converter/ oldalon kipr´ob´alhat´ok, ellen˝orizhet˝okaz ´atv´alt´asok.

1.7. Sz´amrendszerek pontoss´aga Fontos kiemelni, hogy nem eg´esz sz´amokfel´ır´asaeset´ennem biztos, hogy a sz´ampontosan le´ırhat´ov´eges sz´amjeggyel! S˝ot, egy konkr´et nem eg´esz sz´am´abr´azol´as´anak pontoss´agafugg¨ 1 a sz´amrendszer alapj´at´ol:p´eld´aulaz 3 t´ızes sz´amrendszerben nem ´ırhat´ofel v´egessz´amjeggyel, 1 ugyanakkor h´armas sz´amrendszerben pontosan fel´ırhat´o: 3 = 0.1[3] = 0.33333 ...[10] 1.7.1. feladat. Adjunk meg n´eh´any p´eld´atarra, amikor az egyik sz´amrendszerben v´eges sz´am- jeggyel fel´ırhat´osz´ama m´asik sz´amrendszerben nem ´ırhat´ofel v´eges sz´amjeggyel! 1.7.2. feladat. a) Adjunk meg n´eh´any p´eld´atolyan sz´amra, ami egyetlen sz´amrendszerben sem ´ırhat´ofel v´eges sz´amjeggyel! b) Fel´ırhat´okezek a sz´amokt¨ort alakban? c) Milyen sz´amhalmazt alkotnak ezek a sz´amok?

1.7.3. feladat. Kiv´alaszthat´oolyan alap´usz´amrendszer, amiben minden racion´alis sz´ampon- tosan ´abr´azolhat´ov´eges hossz´ukaraktersorozattal? Indokoljuk meg!

2. M´ert´ekegys´egek

Az informatik´aban haszn´alatos legkisebb egys´ega bit [bit] (sok esetben b-vel r¨ovid´ıtik, de a legfrissebb szabv´any2 a r¨ovid´ıt´esn´elkuli¨ form´ataj´anlja, ami k´ezenfekv˝oa sz´amrendszerek r´eszben t´argyaltak miatt, hiszen a b postfix a bin´aris sz´amrendszert jel¨oli). Ert´eke´ 0 vagy 1 lehet. Haszn´alhatjuk t´arol´okapacit´asvagy inform´aci´omennyis´eg jel¨ol´es´ere. Az ut´obbi egy fels˝obb´eves t´argy, az Inform´aci´o´es k´odelm´elet t´em´aja,mi itt csak a t´arol´asivonatkoz´as´aval foglalkozunk. A b´ajt [byte] az informatika m´asik legfontosabb egys´ege,jele: B. Mi az ´altal´anosan elfogadott, a gyakorlatban majdnem kiz´ar´olagosan haszn´alt 1 B = 8 bit ´atv´alt´ast haszn´aljuk, b´aregyes (egzotikus) architekt´ur´akeset´eben enn´elt¨obb vagy kevesebb bit is alkothat egy b´ajtot. Az SI m´ert´ekegys´egrendszerben haszn´alatos k (kilo), M (mega), G (giga), T (tera), P (peta) stb. prefixek mellett a bit ´esa b´ajteset´eben haszn´alatosak a Ki (kibi), Mi (mebi), Gi (gibi), Ti (tebi), Pi (pebi) stb. bin´aris prefixek is (l´asdaz1. ´abr´an). Fontos kiemelni, hogy az egyre nagyobb prefixek eset´eben egyre nagyobb a kul¨ ¨onbs´egaz SI ´esa bin´aris prefixek k¨oz¨ott. P´eld´aul a G (10003) ´esGi (10243) k¨oz¨ott a kul¨ ¨onbs´egkb. 7%, a T (10004) ´esTi (10244) k¨oz¨ott m´arkb. 10%.3 A kapcsolat a prefixek ´es a sz´amrendszerek k¨oz¨ott ott fedezhet˝ofel, hogy a haszn´alt prefixek mindig a sz´amrendszer alapja valamely hatv´any´anak hatv´anyai. Az SI esetben ez a t´ız harmadik hatv´anya (illetve ennek tov´abbi hatv´anyai), de ugyanez igaz a bin´aris prefixekre is, amikor is ez a kett˝otizedik hatv´anya (illetve ennek tov´abbi hatv´anyai).

3. G´epi sz´am´abr´azol´as

A g´epi sz´am´abr´azol´asa sz´amok(sz´am´ıt´o)g´epek mem´ori´aj´abanvagy egy´ebegys´eg´eben t¨ort´en˝o t´arol´as´atvagy valamely adath´al´ozaton t¨ort´en˝otov´abb´ıt´asform´atum´atadja meg.

2ISO/IEC 80000, Part 13 - Information science and technology 3Kul¨ ¨on¨osen fontos ez a h´att´ert´arak eset´eben, ahol a gy´art´okink´abbaz SI prefixeket haszn´alj´ak, mert ´ıgy egy 1000000000000 B m´eret˝ulemezegys´egeset´eben 1 TB-ot tuntethetnek¨ fel, m´ıg ugyanez a bin´arisprefixekkel csup´an 0.9 TiB

4 SI bin´aris prefix szorz´o prefix szorz´o k (kilo) 1000 Ki (kibi) 1024 M (mega) 10002 Mi (mebi) 10242 G (giga) 10003 Gi (gibi) 10243 T (tera) 10004 Ti (tebi) 10244 P (peta) 10005 Pi (pebi) 10245

1. ´abra. SI ´esbin´aris prefixek

3.1. Nem negat´ıveg´esz sz´amok ´abr´azol´asa Egy nem negat´ıv (el˝ojel n´elkuli)¨ eg´esz sz´am[unsigned integer] ´abr´azol´asa megegyezik a bin´aris sz´amrendszern´elmegismert le´ır´assal, azaz egy nem negat´ıv eg´esz sz´amota kettes sz´amrendszerbe ´atv´altott form´aj´aban t´arolunk. A t¨om¨orebb ´ır´asm´odmiatt ugyanakkor ezt legt¨obbsz¨or nem bin´aris, hanem hexadecim´alis form´aban ´ırjuk le. (Ne feledjuk,¨ hogy a bin´arisb´olhexadecim´alisba v´alt´asnem m´as,mint n´egybites´evel csoportos´ıt´as,ahogy azt az el˝oz˝oekben l´athattuk.) A kapott ´ert´ekeket ´altal´aban valamilyen fix hosszon t´aroljuk (a nem haszn´alt helyi´ert´ekekre null´at´ırunk), ami a gyakorlatban kiz´ar´olag eg´esz byte m´eret˝u´abr´azol´ast jelent. ´Igy az el˝ojel n´elkuli¨ eg´eszek is legt¨obbsz¨or 1, 2, 4, 8, . . . byte (8, 16, 32, 64, . . . bit) hossz´uak lehetnek. ´Igy is h´ıvjuk ezeket: 8 bites el˝ojel n´elkuli¨ eg´esz, 16 bites el˝ojel n´elkuli¨ eg´eszstb.

3.1.1. p´elda. A 46[10] sz´amota mem´ori´abana k¨ovetkez˝ok´eppen t´aroljuk 1 b´ajton: 00101110 (=0x2E).

3.1.2. feladat. Az ¨osszead´asm˝uvelet hogyan v´egezhet˝oel az el˝ojel n´elkuli¨ eg´eszsz´amokbin´aris t´arol´asa eset´en? Adjunk erre m´odszert (algoritmust)!

3.1.3. feladat. Hogyan d¨onthet˝oel k´et el˝ojel n´elkuli¨ eg´esz sz´amr´ol,hogy melyik a nagyobb? Adjunk r´aalgoritmust!

3.2. Negat´ıveg´esz sz´amok ´abr´azol´asa Ebben a r´eszben a negat´ıv eg´eszek ´abr´azol´as´anakv´altozatait tekintjuk¨ ´at.

3.2.1. El˝ojelbites ´abr´azol´as A legegyszer˝ubb m´odszer az el˝ojeles eg´eszek ´abr´azol´as´ara, ha az el˝ojel n´elkuli¨ eg´eszek ´abr´azol´a- s´ahoz egy el˝ojelet jelent˝obitet adunk (ami 0, ha pozit´ıv az el˝ojel ´es 1, ha negat´ıv az el˝ojel) ´esaz ´abr´azol´asb´olfennmarad´ot¨obbi biten t´aroljuk a sz´amabszol´ut ´ert´ek´etaz el˝oz˝oekben t´argyaltak szerint. 3.2.1. p´elda. A −32 el˝ojelbites ´abr´azol´asa8 biten (1 bit el˝ojel + 7 bit ´ert´ek): 10100000

3.2.2. p´elda. A 18 el˝ojelbites ´abr´azol´asa8 biten (1 bit el˝ojel + 7 bit ´ert´ek): 00010010 Ez a megold´assok szempontb´olnem megfelel˝o:a legk´ezenfekv˝obb probl´ema, hogy ezzel a m´od- szerrel lehets´eges a +0 ´esa −0 ´abr´azol´asais (8 biten ezek a k¨ovetkez˝ok: +0 = 00000000, -0 = 10000000), ami zavarhoz vezet (p´eld´aul a nulla-e” vizsg´alatot ´ıgy k´et kul¨ ¨onb¨oz˝o´ert´ekre kell ” megtenni), tov´abb´aaz ilyen m´odon fel´ırt sz´amokkal v´egzett m˝uveletek bonyolultabbak, mint amennyire az felt´etlenul¨ szuks´eges¨ lenne. 3.2.3. feladat. A 3.1.2. feladatban kital´alt ¨osszead´asm˝uvelet elv´egezhet˝o-e m´odos´ıt´asn´elkul¨ az el˝ojelbites sz´am´abr´azol´asim´odszer haszn´alat´aval? Adjunk meg egy p´eld´at! 3.2.4. feladat. M´odos´ıtsuk a 3.1.3. feladatban kital´altalgoritmust, hogy az k´et el˝ojeles sz´am k¨ozul¨ is ki tudja v´alasztani a nagyobbikat!

5 3.2.2. Kettes komplemens ´abr´azol´as Sokkal jobb eredm´enyre vezet a kettes komplemens ´abr´azol´as:ahelyett, hogy egy el˝ojelbittel jel¨ol- n´enk az el˝ojelet, a k¨ovetkez˝om´odon j´arunk el: a negat´ıv sz´amhoz egyet hozz´aadunk, az eredm´eny abszol´ut ´ert´ek´etbin´arisan ´abr´azoljuk a megadott sz´am´ubiten (az el˝oz˝oekben t´argyaltak szerint, mivel ez nem negat´ıv), v´egul¨ az ´ıgykapott sz´amjegyeket invert´aljuk. Ebb˝ola sz´am´ıt´asi m´odb´ol k¨ovetkezik az ´abr´azol´asneve: kettes komplemens. A kettes komplemens sz´am´abr´azol´asi m´odszert el˝ojeles eg´esz [signed integer] sz´am´abr´azol´as- nak nevezzuk.¨ 3.2.5. p´elda. A −2 kettes komplemens ´abr´azol´asa 8 biten: −2 + 1 = −1 ennek abszol´ut´ert´eke: 1, ´abr´azolva: 00000001, invert´alva: 11111110. 3.2.6. p´elda. A −19 kettes komplemens ´abr´azol´asa 8 biten: −19 + 1 = −18 ennek abszol´ut ´ert´eke: 18, ´abr´azolva: 00010010, invert´alva: 11101101.

Fontos tudnival´ok: • Kettes komplemens ´abr´azol´asban is lehets´eges nem negat´ıv sz´amok´abr´azol´asa,aminek m´odja megegyezik az el˝ojel n´elkuli¨ eg´eszek t´arol´asi m´odj´aval. (Azaz ebben az esetben nem kell az el˝oz˝oekben ismertetett m˝uveleteket elv´egezni.) • A kettes komplemens ´abr´azol´asban m´arcsak egyetlen ´abr´azol´asi m´odja van a null´anak. • Az esetek t´ulnyom´ot¨obbs´eg´eben a g´epi sz´am´abr´azol´assor´anaz el˝ojeles eg´eszek ´abr´azol´as´ara a kettes komplemens ´abr´azol´asthaszn´aljuk.

3.2.7. feladat. Adjuk meg a 0 kettes komplemens ´abr´azol´as´at8, 16, 32, 64 biten! 3.2.8. feladat. Adjuk meg a −1 kettes komplemens ´abr´azol´as´at8, 16, 32, 64 biten! 3.2.9. feladat. Adjuk meg az 1 kettes komplemens ´abr´azol´as´at8 biten! 3.2.10. feladat. A 3.1.2. feladatban kital´alt ¨osszead´asm˝uvelet elv´egezhet˝o-e m´odos´ıt´asn´elkul¨ a kettes komplemens sz´am´abr´azol´asi m´odszer haszn´alat´aval? Adjuk ¨ossze az el˝oz˝ok´et feladatban kisz´amolt, 8 bites −1 ´es1 ´ert´eket, ´es ellen˝orizzuk,¨ hogy null´atkaptunk-e! 3.2.11. feladat. K´et, kettes komplemens m´odon ´abr´azolt sz´amr´olhogyan d¨onthet˝oel, hogy me- lyik a nagyobb? Alkalmazhat´o m´odos´ıt´asn´elkul¨ ugyanaz az algoritmus, mint a 3.1.3 feladatban?

3.2.3. Eltolt ´abr´azol´as Soroljuk fel egy list´abanaz n biten t¨ort´en˝oel˝ojel n´elkuli¨ sz´am´abr´azol´assal fel´ırhat´o´ert´ekeket n¨ovekv˝osorrendben. Az eltolt [excess] sz´am´abr´azol´asi m´odszer ezeket az eltol´asm´ert´ek´eben lefel´e tolja ´ugy, hogy az ´ujonnan bel´ep˝oelemek az ´ert´ekszerint cs¨okken˝onegat´ıvsz´amoklegyenek (l´asd 2. ´abra). 3.2.12. feladat. L´etezik olyan excess ´abr´azol´as, ami a negat´ıv sz´amokeset´eben megegyezik a kettes komplemens ´abr´azol´assal? A lista eltol´asahelyett az ´abr´azoland´o´ert´ekeket ´ugy is megkaphatjuk, hogy az ´abr´azoland´o sz´amhoz hozz´aadjuk az eltol´asm´ert´ek´et, ´esaz eredm´enyul¨ kapott sz´amot´abr´azoljuk az el˝ojel n´elkuli¨ eg´eszsz´am´abr´azol´asi m´odszere szerint. 3.2.13. feladat. Mi biztos´ıtja, hogy az el˝oz˝om´odszer m˝uk¨odik? (Mi garant´alja, hogy nem negat´ıv sz´amotkapunk, ha az ´abr´azoland´osz´amhoz hozz´aadjuk az eltol´asm´ert´ek´et?) Ha m´egsem m˝uk¨odik, az mit jelent? 3.2.14. p´elda. A −2 excess-2 ´abr´azol´asa3 biten: −2 + 2 = 0, teh´at´abr´azoland´oa 0 a nem negat´ıv eg´eszek ´abr´azol´asaszerint: 000 (l´asd2. ´abra els˝osora). 3.2.15. p´elda. A −3 excess-4 ´abr´azol´asa3 biten: −3 + 4 = 1, teh´at´abr´azoland´oaz 1 a nem negat´ıv eg´eszek ´abr´azol´asaszerint: 001 (l´asd2. ´abra m´asodik sora). 3.2.16. p´elda. Az 5 excess-2 ´abr´azol´asa 3 biten: 5+2 = 7, teh´at ´abr´azoland´oa 7 a nem negat´ıv eg´eszek ´abr´azol´asa szerint: 111 (l´asd2. ´abra utols´osora).

6 t´arolt adat adat ´ertelmez´ese 3 biten el˝ojel n´elkuli¨ eg´esz excess-2 excess-4 000 0 −2 −4 001 1 −1 −3 010 2 0 −2 011 3 1 −1 100 4 2 0 101 5 3 1 110 6 4 2 111 7 5 3

2. ´abra. A 3 biten t´arolhat´o´ert´ekek el˝ojel n´elkuli¨ eg´esz ´esexcess-2 illetve excess-4 szerinti ´ertelmez´ese

3.3. Eg´esz sz´amok adat´abr´azol´asainak ¨osszehasonl´ıt´asa 3.3.1. feladat. Hasonl´ıtsuk ¨ossze az el˝oz˝oekben ismertetett, negat´ıv sz´amok´abr´azol´as´arais alkalmas m´odszereket az al´abbi szempontok alapj´an: • Az ¨osszead´asm˝uvelet elv´egezhet˝ougyan´ugy, mint a nem negat´ıv eg´eszek ´abr´azol´as´an´al? • K´et´abr´azolt sz´ameset´eben a kisebb/nagyobb eld¨ont´ese (rendez´es) elv´egezhet˝ougyan´ugy, mint a nem negat´ıv eg´eszekn´el? • H´anyf´elek´eppen ´abr´azolhat´oa nulla? • Hogyan v´egezhet˝oel az invert´al´as(diszkr´etmatematikai nyelven az addit´ıv inverz sz´am´ı- t´asa)? • Hogyan v´egezhet˝oel a kivon´asm˝uvelet? 3.3.2. feladat. Hasonl´ıtsuk ¨ossze a 8 bites sz´am´abr´azol´asokeset´enaz el˝ojel n´elkuli¨ eg´esz, az el˝ojelbites eg´esz, a kettes komplemens, a 127-tel eltolt, a 255-tel eltolt ´esa 256-tal eltolt sz´am- ´abr´azol´asokat! (T´abl´azatosan foglaljuk ¨ossze: egy sor legyen a t´arolt 8 bit, az oszlopok legyenek a vizsg´alt ´abr´azol´asim´odok, egy adott mez˝obe ´ırjuk be a mez˝osor´anakmegfelel˝obitsorozat ´ertelmez´es´et az oszlopnak megfelel˝osz´am´abr´azol´aseset´eben, hasonl´oana2. ´abr´ahoz!)

3.4. Eg´esz sz´amok ´abr´azol´asi hat´arai ´espontoss´aga 3.4.1. El˝ojel n´elkuli¨ eg´esz t´arol´as´abr´azol´asihat´arai´espontoss´aga Az N biten t¨ort´en˝o,el˝ojel n´elkuli¨ eg´esz sz´am´abr´azol´aseset´en a t´arolhat´olegkisebb ´ert´ek: 0, a t´arolhat´olegnagyobb ´ert´ek: 2N − 1. El˝ojel n´elkuli¨ eg´esz sz´am´abr´azol´aseset´eben a t´arol´aspontos, hiszen csak eg´esz sz´amokat kell t´arolni, ´es a hat´arokon belul¨ minden eg´esz sz´ampontosan t´arolhat´o.Ebb˝olad´od´oanaz ´abr´azol´asi intervallumot az ´abr´azolhat´osz´amokegyenletesen t¨oltik ki (l´asda3. ´abr´an).

1

0 2 N−1 = 31

3. ´abra. 5 bites el˝ojel n´elkuli¨ eg´eszsz´am´abr´azol´aseset´en az ´abr´azol´asiintervallum ´esaz ezen belul¨ ´abr´azolhat´osz´amok.

3.4.1. p´elda. Ha 8 bites el˝ojel n´elkuli¨ eg´esz´abr´azol´ast haszn´alunk, akkor a legkisebb ´abr´azolhat´o sz´ama 00000000 (´ert´eke 0), a legnagyobb ´abr´azolhat´osz´amaz 11111111 (´ert´eke 255).

7 3.4.2. feladat. Mennyi a legnagyobb t´arolhat´o´ert´ek 8, 16, 32, 64 bites el˝ojel n´elkuli¨ eg´esz eset´eben?

3.4.3. feladat. Osszesen¨ h´any kul¨ ¨onb¨oz˝o´ert´ek t´arolhat´o8, 16, 32, 64 biten, el˝ojel n´elkuli¨ eg´esz sz´am´abr´azol´aseset´eben?

3.4.2. Kettes komplemens t´arol´as´abr´azol´asihat´arai ´espontoss´aga Ha kettes komplemens m´odon´abr´azolunk egy eg´esz sz´amot ´esehhez N bit ´allrendelkez´esre, akkor a t´arolhat´olegkisebb ´ert´ek: −2N−1, a t´arolhat´olegnagyobb ´ert´ek: 2N−1 −1. Kettes komplemens sz´am´abr´azol´aseset´eben a t´arol´aspontos, hiszen csak eg´esz sz´amokat kell t´arolni, ´esa hat´arokon belul¨ minden eg´esz sz´ampontosan t´arolhat´o. Ebb˝olad´od´oanaz ´abr´azol´asi intervallumot az ´abr´azolhat´osz´amokegyenletesen t¨oltik ki (l´asda4. ´abr´an).

−1 1

− 2 N−1 = − 16 0 2 N−1−1 = 15

4. ´abra. 5 bites kettes komplemens sz´am´abr´azol´aseset´en az ´abr´azol´asiintervallum ´esaz ezen belul¨ ´abr´azolhat´osz´amok.

3.4.4. p´elda. Ha 8 bites kettes komplemens ´abr´azol´ast haszn´alunk, akkor a legkisebb ´abr´azol- hat´osz´amaz 10000000 (´ert´eke -128), a legnagyobb ´abr´azolhat´osz´ama 01111111 (´ert´eke 127). 3.4.5. feladat. Kettes komplemens ´abr´azol´aseset´enmi´ert nem ugyanannyi sz´amt´arolhat´oa pozit´ıv ´es a negat´ıv tartom´anyban? (Azaz mi´ert nem -127 ´es127 vagy -128 ´es128 a k´ethat´ar?)

3.4.6. feladat. Mennyi az ´ert´eke a kettes komplemens ´abr´azol´assal, 8 biten t´arolt 11111111 illetve a 00000000 sz´amoknak?

3.4.7. feladat. Eld¨onthet˝oegyszer˝uen (r´an´ez´esre) egy kettes komplemens m´odon´abr´azolt sz´am- r´ol,hogy az negat´ıv vagy pozit´ıv?

3.4.8. feladat. Osszesen¨ h´any kul¨ ¨onb¨oz˝o´ert´ekt´arolhat´o8, 16, 32, 64 biten, kettes komplemens sz´am´abr´azol´aseset´eben?

3.4.9. feladat. Mi a kapcsolat a 3.4.3. feladat ´esa 3.4.8. feladatban kapott eredm´enyek k¨oz¨ott?

3.4.3. Eltolt t´arol´as´abr´azol´asi hat´arai´espontoss´aga Az N biten t¨ort´en˝oeltolt-M ´abr´azol´aseset´en a legkisebb ´abr´azolhat´osz´ama −M, a legnagyobb ´abr´azolhat´osz´ama −M + 2N − 1. Eltolt sz´am´abr´azol´aseset´eben a t´arol´aspontos, hiszen csak eg´esz sz´amokat kell t´arolni, ´esa hat´arokon belul¨ minden eg´esz sz´ampontosan t´arolhat´o.Ebb˝ol ad´od´oanaz ´abr´azol´asiintervallumot az ´abr´azolhat´osz´amokegyenletesen t¨oltik ki (l´asdaz5. ´abr´an).

−1 1

−M = −16 0 −M+2N−1 = 15

5. ´abra. 6 bites excess-16 sz´am´abr´azol´aseset´en az ´abr´azol´asiintervallum ´esaz ezen belul¨ ´abr´azolhat´osz´amok.

8 3.4.4. T´ulcsordul´as Az eg´esz sz´amokv´egesbiten t¨ort´en˝o´abr´azol´asamiatt mindig van legkisebb ´eslegnagyobb ´ab- r´azolhat´osz´am. Amikor m˝uveletet v´egzunk,¨ elk´epzelhet˝o,hogy a m˝uvelet eredm´enye m´arnem ´abr´azolhat´oaz operandusokkal megegyez˝om´eretben. Ezt a jelens´eget t´ulcsordul´asnak [overflow] nevezzuk.¨ T´ulcsordul´asteh´atlehets´eges pozit´ıv´esnegat´ıv ir´anyban is! Figyelem, az alulcsordul´as (l´asda 3.5.5. r´eszt) nem a negat´ıv ir´anyban t¨ort´en˝ot´ulcsordul´astjelenti! K¨onnyebben megje- gyezhet˝o,ha ´ugy tekintunk¨ a t´ulcsordul´asra, hogy a sz´amabszol´ut ´ert´eke t´ul nagy ´es emiatt nem ´abr´azolhat´o. T´ulcsordul´aseset´en– megval´os´ıt´ast´olfugg˝oen–¨ lehets´eges • lev´ag´as: a t´ulcsordult eredm´eny m´eg´abr´azolhat´or´esz´ett´aroljuk, a nem ´abr´azolhat´or´eszt egyszer˝uen elfelejtjuk”.¨ 4 A legt¨obb architekt´ura ´ıgy m˝uk¨odik. ” • szatur´aci´o: a t´ulcsordult eredm´eny helyett a legnagyobb illetve legkisebb ´abr´azolhat´o´er- t´eket t´aroljuk. 3.4.10. p´elda. T´ulcsordul´aspozit´ıv ir´anyban: ha 8 bites el˝ojel n´elkuli¨ eg´eszekkel dolgozunk, a 156+172=328 ¨osszeget m´arnem tudjuk 8 biten t´arolni (mert a legnagyobb t´arolhat´o´ert´eka 255). 3.4.11. p´elda. T´ulcsordul´asnegat´ıv ir´anyban: ha 8 bites el˝ojeles eg´eszekkel dolgozunk, a -84+(- 79)=-163 ¨osszeget m´arnem tudjuk 8 biten t´arolni (mert a legkisebb t´arolhat´o´ert´eka -127).

3.4.12. p´elda. Lev´ag´as: ha 8 bites el˝ojel n´elkuli¨ eg´eszekkel dolgozunk, a 156[10] = 10011100[2] ´esa 172[10] = 10101100[2] val´odi ¨osszege (328[10] = 101001000[2]) helyett annak a 8 utols´obitj´et t´aroljuk: 01001000.

3.4.13. p´elda. Szatur´aci´o:ha 8 bites el˝ojel n´elkuli¨ eg´eszekkel dolgozunk, a 156[10] = 10011100[2] ´esa 172[10] = 10101100[2] val´odi ¨osszege (328[10] = 101001000[2]) helyett az ´abr´azolhat´olegna- gyobb sz´amott´aroljuk: 11111111. 3.4.14. feladat. Mi (volt) az Y2K probl´ema?Mi a kapcsolat a t´ulcsordul´as´esaz Y2K probl´ema k¨oz¨ott?

3.5. A lebeg˝opontos sz´am´abr´azol´as Nem eg´esz sz´amokg´epi ´abr´azol´as´ara a lebeg˝opontos [floating point] ´abr´azol´asthaszn´aljuk: a sz´amotel˝osz¨or ´atalak´ıtjuk normaliz´alt alakba, ´es az ´ıgykapott alak kul¨ ¨onb¨oz˝or´eszeit kul¨ ¨on- kul¨ ¨on t´aroljuk.

3.5.1. Normaliz´altalak Egy sz´amnormaliz´alt alakj´anolyan szorzatra bont´as´at´ertjuk¨ (l´asd6. ´abra), ahol a m´asodik tag a sz´amrendszer alapj´anak valamely hatv´anya (amit a sz´amnagys´agrendj´enek is nevezunk),¨ az els˝o tag ´ert´eke pedig annyi, hogy a m´asodik taggal megszorozva az eredeti sz´amot kapjuk. Tov´abbi felt´etel, hogy az els˝otag egyetlen nem nulla sz´amjegyet tartalmazzon a tizedespont el˝ott, ami garant´alja, hogy a normaliz´alt alakban t¨ort´en˝ofel´ır´asegy´ertelm˝ulegyen. 3.5.1. p´elda. T´ızes sz´amrendszerben a 380 normaliz´altalakja: 3.8 · 102, a 3.875 normaliz´alt alakja 3.875 · 100, a 0.00000651 normaliz´alt alakja 6.51 · 10−6, a −53.75 normaliz´alt alakja: −5.375 · 101. Az el˝oz˝oekben defini´altels˝otagot a sz´am mantissz´aj´anak [mantissa, significand, coefficient], a hatv´anykitev˝ot(a nagys´agrendet) a sz´am karakterisztik´aj´anak vagy exponens´enek [exponent] nevezzuk.¨ Negat´ıvsz´amokt´arol´as´ahoz szuks´egvan¨ m´egaz el˝ojelre is (l´asd6. ´abra). A lebeg˝opontos elnevez´es abb´olad´odik, hogy az ´abr´azolhat´osz´amoknem fix helyi´ert´ek˝utize- desjegyekkel kerulnek¨ t´arol´asra5, hanem az exponens alapj´ana mantissza tizedespontja v´altozik ( lebeg”). ” 4P´eld´aulmechanikus g´az´or´an´alvagy r´egebbi aut´okkilom´eter sz´aml´al´oj´an´al figyelhet˝omeg ilyen jelens´eg,mert fix sz´am´uhelyi´ert´eken t¨ort´enik a m´er´es. A kilom´etersz´aml´al´oktekintet´eben ezt a tulajdons´agot kihaszn´alva tekerik k¨orbe egyes nepperek az ´or´at,hogy a kocsi kevesebbet futottnak t˝unj¨on. 5ezt a m´odot fixpontos ´abr´azol´asnak nevezzuk¨

9 − 3.775 ⋅101

előjel mantissza exponens

6. ´abra. A −37.75 normaliz´altalakja t´ızes sz´amrendszerben ´esennek elemei (bekarik´azva).

3.5.2. feladat. Adjunk arra p´eld´at, hogy az els˝otag egyetlen nem nulla sz´amjegyet tartalmaz- ” zon a tizedespont el˝ott” felt´etel hi´any´aban egy sz´amott¨obbf´elek´eppen is fel lehet ´ırni normaliz´alt alakban! 3.5.3. feladat. Adjuk meg a nulla normaliz´alt alakj´at!

3.5.2. Bin´aris normaliz´alt alak A mantissza Kettes sz´amrendszerben ´abr´azolva a sz´amot, a normaliz´alt alak tov´abb egysze- r˝us¨odik, hiszen a mantissza tizedespontja el˝ott mindig 1 ´all( az els˝otag egyetlen nem nulla ” sz´amjegyet tartalmazzon a tizedespont el˝ott” felt´etel miatt), amit ´ıgynem kell elt´arolni (l´asd7. ´abra), ´esezt a megtakar´ıtott bitet a mantissza pontosabb t´arol´as´ara lehet ford´ıtani. Fontos, hogy a lebeg˝opontos sz´am´ertelmez´esekor ezt az el nem t´arolt sz´amjegyet is figyelembe vegyuk,¨ tov´abb´a,hogy az els˝o(nem t´arolt) egyes ut´anm´arfontosak az azt k¨ovet˝onull´ak, azaz p´eld´aul a 0010111 mantissza helyett nem t´arolhatjuk el az 10111 ´ert´eket!

5 −1.0010111 [2] ⋅2

előjel mantissza exponens

7. ´abra. A -37.75 normaliz´altalakja kettes sz´amrendszerben ´esennek t´aroland´o elemei (bekarik´azva).

Az exponens A normaliz´al´asb´olad´od´oanaz exponens is lehet pozit´ıv vagy negat´ıv. Ennek t´arol´as´ahozaz eltolt t´arol´asi m´odszert haszn´aljuk.

Az el˝ojel Az el˝ojelet 1 biten t´aroljuk; ha ´ert´eke 1: a sz´amnegat´ıv, ha 0: a sz´ampozit´ıv.

8 3.5.4. p´elda. A 380[10] = 101111100[2] normaliz´altalakja 1.011111[2] · 2 , azaz t´aroland´oa 0 el˝ojelbit, a 011111 mantissza ´esa 8 karakterisztika (a megfelel˝oeltol´assal).

1 3.5.5. p´elda. A −3.375[10] = −11.011[2] normaliz´altalakja −1.1011[2] · 2 , azaz t´aroland´oaz 1 el˝ojelbit, a 1011 mantissza ´esaz 1 karakterisztika (a megfelel˝oeltol´assal).

3.5.3. A lebeg˝opontos sz´amelemeinek t´arol´asim´erete Az el˝ojelet mindig egy biten, a mantissz´at´esaz exponenst megadott sz´am´ubiten t´aroljuk. Ha az el˝oz˝oekben kisz´amolt mantissza vagy exponens m´erete nem egyezik meg a t´arol´asim´erettel, akkor az exponenst balr´ol,a mantissz´atjobbr´oleg´esz´ıthetjuk¨ ki null´akkal (ha szuks´eges)!¨ 3.5.6. p´elda. A mantissza 10 biten, az exponens 5 biten t¨ort´en˝oexcess-15 ´abr´azol´asa eset´ena 13 t´ızezer ´abr´azol´asa: 10000 = 10011100010000[2] = 1.001110001[2] · 2 , azaz t´aroland´oa 0 el˝ojel, a 0011100010 mantissza (figyelem, kieg´esz´ıtettuk¨ 10 bites hosszra null´akkal jobbr´ol!) ´es a 13 exponens, ut´obbi az excess-15 ´abr´azol´asmiatt 11100 form´aban.

10 3.5.7. p´elda. A mantissza 10 biten, az exponens 5 biten t¨ort´en˝oexcess-15 ´abr´azol´asa eset´ena −4 −0.078125 ´abr´azol´asa: −0.078125 = −0.000101[2] = −1.01[2] · 2 , azaz t´aroland´oaz 1 el˝ojel, a 0100000000 mantissza (figyelem, kieg´esz´ıtettuk¨ 10 bites hosszra null´akkal jobbr´ol!) ´esa −4 exponens, ut´obbi az excess-15 ´abr´azol´asmiatt 01011 form´aban(figyelem, kieg´esz´ıtettuk¨ 5 bites hosszra egy null´aval balr´ol!). 3.5.8. feladat. A mantissz´atmi´ert jobbr´ol, az exponenst mi´ert balr´oleg´esz´ıthetjuk¨ csak ki null´akkal?

3.5.4. Lebeg˝opontos sz´am´abr´azol´ashat´arai ´espontoss´aga Az el˝ojeles vagy el˝ojel n´elkuli¨ eg´esz ´esa lebeg˝opontos sz´am´abr´azol´aseset´eben is csak fix ´ert´e- kek t´arolhat´ok, de m´ıg ezek az eg´eszek eset´eben pontosan megegyeznek a t´arolni k´ıv´ant eg´esz sz´amokkal, a lebeg˝opontos sz´am´abr´azol´aseset´eben ez nincs ´ıgy, mivel b´arhogy v´alasszuk is meg a sz´am´abr´azol´ashat´arait, az ezek k¨oz¨ott l´ev˝ov´egtelen sok val´ossz´amnyilv´annem ´abr´azolhat´o v´eges helyen. Ezt ´ugy is ´ertelmezhetjuk,¨ hogy a lebeg˝opontos t´arol´assor´ank´enyszer˝ukerek´ıt´es t¨ort´enik. Mindezek miatt az ´abr´azol´asi hat´arok mellett a pontoss´agis jellemez egy-egy konkr´et lebeg˝opontos sz´am´abr´azol´ast, ami megadja, hogy egy adott sz´amt´arol´asa eset´en a t´arolni k´ıv´ant ´esa t´arolt sz´am´ert´eke legfeljebb milyen t´avol lehet egym´ast´ol.A lebeg˝opontos sz´amoknorma- liz´alt alak´ut´arol´as´ab´olk¨ovetkezik, hogy a pontoss´agota mantissza t´arol´asi m´erete hat´arozza meg, az ´abr´azol´asihat´arokpedig els˝odlegesen a karakterisztika ´abr´azol´asim´eret´eb˝olad´odnak. Fontos azt is kiemelni, hogy a pontoss´agaz ´abr´azol´asi tartom´anyban abszol´ut ´ertelemben nem egyenletes, azaz fugg¨ az ´abr´azolni k´ıv´ant sz´amt´ol(l´asd a8. ´abra):

−1 1

0

8. ´abra. Lebeg˝opontos sz´am´abr´azol´ashat´arai ´esa pontosan ´abr´azolhat´osz´amok (2 bites mantissza, 3 bites exponens excess-4 m´odon t´arolva).

3.5.9. p´elda. A mantissza 10 biten, az exponens 5 biten t¨ort´en˝oexcess-15 ´abr´azol´asa eset´en • a t´ızezern´elnagyobb, pontosan ´abr´azolhat´osz´amokk¨ozul¨ a legkisebb (l´asda 3.5.6. feladatot a 10000 ´abr´azol´as´ahoz) a 0011100011 t´arolt mantissz´aj´u´es a 11100 t´arolt exponens˝usz´am: 13 1.0011100011[2] · 2 = 1.2216796875 · 8192 = 10008 • a t´ızezern´el kisebb, pontosan ´abr´azolhat´osz´amokk¨ozul¨ a legnagyobb a 0011100001 t´arolt 13 mantissz´aj´u´esa 11100 t´arolt exponens˝usz´am: 1.0011100001[2] ·2 = 1.2197265625·8192 = 9992 Az el˝oz˝oekb˝olad´odik, hogy t´ızezer k¨orul¨ a hiba 8 (ami a t´ızezer 0.08%-a). 3.5.10. p´elda. A mantissza 10 biten, az exponens 5 biten t¨ort´en˝oexcess-15 ´abr´azol´asa eset´en • az egy t´ızezredn´elkisebb, pontosan ´abr´azolhat´osz´amok k¨ozul¨ a legnagyobb a 1010001101 t´arolt mantissz´aj´u´es00001 t´arolt exponens˝usz´am:1.1010001101 · 2−14 = 1.6376953125 · 0.00006103515625 = 0.00009995698929 • a t´ızezredn´el nagyobb, pontosan ´abr´azolhat´osz´amokk¨ozul¨ a legkisebb a 0 el˝ojel˝u, a 1010001110 t´arolt mantissz´aj´u´es a 00001 t´arolt exponens˝usz´am: 1.1010001110 · 2−14 = 1.638671875 · 0.00006103515625 = 0.000100016593933 Az el˝oz˝oekb˝olad´odik, hogy egy t´ızezred k¨orul¨ a hiba kevesebb, mint egy t´ızmilliomod (ami az egy t´ızezred 0.1%-a). 3.5.11. feladat. A mantissza 10 biten, az exponens 5 biten t¨ort´en˝oexcess-15 ´abr´azol´asa eset´en adjuk meg (az el˝oz˝ok´et p´eld´ahozhasonl´om´odon) az ezern´el, a sz´azn´al, a t´ızn´el, az egy tizedn´el, az egy sz´azadn´al´es az egy ezredn´elnagyobb sz´amokk¨ozul¨ a legkisebb ´abr´azolhat´otilletve a kisebb sz´amokk¨ozul¨ a legnagyobb ´abr´azolhat´ot, ´essz´am´ıtsuk ki az abszol´ut, relat´ıv hib´at. Hogyan v´altozik a relat´ıv hiba az elt´arolt sz´amfuggv´eny´eben?¨

11 A nem pontos t´arol´asakkor is l´athat´o,ha meggondoljuk, hogy a bin´aris normaliz´alt alak fel´ır´asakor nem minden sz´amjegy t´arolhat´oel, ´ıgy azt k´enytelenek vagyunk a t´arol´asim´eretre cs¨okkenteni. 3.5.12. p´elda. A mantissza 10 biten, az exponens 5 biten t¨ort´en˝oexcess-15 ´abr´azol´asaeset´ena 10000.125 ´abr´azol´asa (l´asda 3.5.6. feladatot a 10000 ´abr´azol´as´ahoz): 13 10000.125 = 10011100010000.001 = 1.0011100010000001[2] · 2 , azaz t´arolni kellene a 0 el˝o- jelet, a 00111000 10000001 mantissz´at´esa 13 exponenst, ut´obbi az excess-15 ´abr´azol´asmi- att 11100 form´aban. J´oll´atszik azonban, hogy a mantissza 10 biten t¨ort´en˝ot´arol´asa miatt a 0011100010000001 els˝ot´ız karaktere t´arolhat´ocsak el, ´ıgy k´enyszer˝ukerek´ıt´est¨ort´enik: a 10000.125 helyett a 10000 kerul¨ t´arol´asra. (Ezen nem csod´alkozhatunk, hiszen a 3.5.9 p´eld´aban l´athattuk, hogy 10000 ´es10008 k¨oz¨ott nem t´arolhat´oel m´assz´am.) 3.5.13. feladat. Mi t¨ort´enik a lebeg˝opontos sz´am´abr´azol´asi hat´araival ill. pontoss´ag´aval, ha a • mantissza m´eret´et1 bittel n¨ovelem? • exponens m´eret´et1 bittel n¨ovelem?

3.5.5. Alulcsordul´as A t´ulcsordul´ashoz (ami pozit´ıv vagy negat´ıv ir´anyban t´ul nagy sz´am´abr´azol´as´anakk´ıs´erlet´et jelenti, azaz a sz´am´abr´azol´asiintervallumb´oll´epunk¨ ki) hasonl´oaz alulcsordul´as[underflow]: olyan kis abszol´ut ´ert´ek˝usz´amotakarunk ´abr´azolni, ami m´arnem ´abr´azolhat´o. A kettes sz´amrendszerben t¨ort´en˝onormaliz´alt ´abr´azol´asnak k¨osz¨onhet˝omegtakar´ıt´as(azaz hogy a mantissza els˝osz´amjegye fixen 1, ´ıgy a mantissz´anakcsak az 1-t˝oljobbra l´ev˝or´esz´et t´aroljuk el, ezzel 1 bitet megtakar´ıtva) h´atr´anyos hat´asaitt jelentkezik: a legkisebb t´arolhat´o mantissza 1.0 ... 0, a legkisebb karakterisztika AKmin (ahol A jelenti a sz´amrendszer alapj´at, Kmin pedig a legkisebb ´abr´azolhat´okarakterisztik´at), a legkisebb t´arolhat´opozit´ıv sz´amezek szorzata: 1.0 ... 0 · AKmin = AKmin . 3.5.14. p´elda. 10 bites mantissza ´es5 bites excess-15 exponens t´arol´aseset´ena legkisebb ´abr´a- −15 1 zolhat´opozit´ıv sz´am:1.0 ... 0 · 2 = 215 = 0.000030517578125. 3.5.15. p´elda. 10 bites mantissza ´es 5 bites excess-15 exponens t´arol´aseset´en a legnagyobb −15 1 ´abr´azolhat´onegat´ıv sz´am: −1.0 ... 0 · 2 = 215 = −0.000030517578125. Az el˝oz˝ok´etp´elda eredm´eny´eb˝olk¨ovetkezik, hogy a null´atsem tudjuk ´abr´azolni! Sajnos a legkisebb pozit´ıv ´esa legnagyobb negat´ıv´ert´ek k¨oz¨ott a szomsz´edos t´avols´agokhoz k´epest nagy ´abr´azolhatatlan tartom´any h´uz´odik, amit alulcsordul´asi r´esnek [underflow gap] ne- vezunk¨ (l´asda9. ´abr´an). A kis sz´amok´abr´azolhatatlans´agamellett sokkal nagyobb probl´ema

−1 1

0

−1 1 0

9. ´abra. Lebeg˝opontos sz´am´abr´azol´aseset´en a nulla k¨oruli¨ alulcsordul´asir´es (2 bites mantissza, 3 bites exponens excess-4 m´odon t´arolva). az, hogy ha az eddigiek alapj´anj´arn´ankel, akkor b´armely k´et´abr´azolhat´olebeg˝opontos sz´am kul¨ ¨onbs´egenem biztos, hogy ´abr´azolhat´omaradna, azaz null´aval helyettes´ıt˝odne. Ez ´ori´asi prob- l´emaa kis abszol´ut ´ert´ek˝usz´amokkal dolgoz´oalgoritmusok eset´eben: ha egy kivon´asut´annem

12 garant´alhat´o,hogy az eredm´eny ´abr´azolhat´o(azaz nem nulla), akkor hogyan lehetn´enk abban biztosak, hogy a k¨ovetkez˝osz´am´ıt´asnem fog hib´ahoz vezetni? P´eld´ak: Ha egy sz´amotelosztunk m´asik k´et, nem nulla sz´amkul¨ ¨onbs´eg´evel, lehet, hogy null´aval fogunk osztani? Ha egy nem nulla sz´amb´olkivonunk egy m´asik nem nulla sz´amot, majd k´es˝obbugyanezt hozz´aadjuk, akkor nem fogjuk visszakapni az eredeti sz´amunkat? 3.5.16. p´elda. Sz´am´ıtsuk ki 10 bites mantissza ´es 5 bites exponens excess-15 t´arol´asa eset´eben a m´asodik legkisebb pozit´ıv sz´amot: 1.0000000001 · 2−15 = 2−15 + 2−25. Ha ebb˝olkivonjuk a legkisebb ´abr´azolhat´osz´amot (l´asdA 3.5.14. p´eld´at) az eredm´eny 2−25 lesz, ami nyilv´annem ´abr´azolhat´o10 bites mantissz´an´es 5 bites exponensen excess-15 form´aban (az eddig ismertetettek szerint).

3.6. Az IEEE 754 lebeg˝opontos sz´am´abr´azol´as A lebeg˝opontos sz´amok´abr´azol´as´anaka gyakorlatban is alkalmazott nemzetk¨ozi szabv´anya a az IEEE 754 = IEC 599 = ISO/IEC 60559. Az ebben defini´alt konkr´etbin´aris lebeg˝opontos ´abr´azol´asokk¨ozul¨ n´eh´any l´athat´oa 10. ´abr´an. A szabv´any a t´argyaltakon k´ıvul¨ m´egsok m´as tulajdons´agot,funkci´otis defini´al, p´eld´aula kerek´ıt´es szab´alyait, m˝uveleteket, kiv´etelkezel´est, s˝ot t´ızes alap´ulebeg˝opontos sz´am´abr´azol´ast is, de ezekkel jelen t´argy keret´eben nem foglalkozunk.

elnevez´es mantissza karakterisztika karakterisztika m´erete [bit] m´erete [bit] eltol´as binary16 10 5 15 binary32 23 8 127 binary64 52 11 1023 binary128 112 15 16383

10. ´abra. IEEE 754 = IEC 599 = ISO/IEC 60559 szabv´anyos bin´aris lebeg˝opontos t´ıpusok jellemz˝oi

3.6.1. T´arol´asisorrend A lebeg˝opontos sz´amt´arol´asi sorrendje a k¨ovetkez˝o:el˝ojel, exponens, mantissza. 3.6.1. p´elda. A 3.5.6. p´elda eset´eben (binary16 form´atum) t´aroland´o:0 11100 0011100010. 3.6.2. p´elda. A 3.5.7. p´elda eset´eben (binary16 form´atum) t´aroland´o:1 01011 0100000000.

3.6.3. p´elda. A binary16 form´atumban t´arolt 0000 0100 0000 0000 bitminta ´ertelmez´ese: el˝ojel: 0, exponens: 00001, exponens ´ert´eke: 1 − 15 = −14, mantissza: 0000000000, kieg´esz´ıtve a nem t´arolt bittel: 1.0000000000, azaz a t´arolt sz´am:1.0000000000 · 2−14 = 2−14. 3.6.4. p´elda. A binary16 form´atumban t´arolt 0000 0100 0000 0001 bitminta ´ertelmez´ese: el˝ojel: 0, exponens: 00001, exponens ´ert´eke: 1 − 15 = −14, mantissza: 0000000001, kieg´esz´ıtve a nem t´arolt bittel: 1.0000000001 azaz a t´arolt sz´am:1.0000000001 · 2−14 = 2−14 + 2−24.

3.6.5. feladat. Mondjuk p´eld´atolyan m˝uveletre vagy rel´aci´ora,amelyet k¨onnyebb elv´egezni, ha az eltolt sz´am´abr´azol´ast haszn´aljuk az exponens t´arol´as´ara´esa t´arol´asi sorrend: exponens, mantissza (azaz nem a normaliz´alt alak sorrendje: mantissza, exponens)

3.6.2. Subnorm´alt ´abr´azol´as Az alulcsordul´asihiba megszuntet´es´ehez¨ – az IEEE 754 szabv´anynak megfelelve – az el˝oz˝oekben t´argyaltakkal ellent´etben a nullak´ent t´arolt exponens ´ert´eket speci´alisan kell kezelni: ebben az esetben a mantissza legnagyobb helyi´ert´ek˝ubitj´etaz el˝oz˝oekben megismert fix 1 helyett null´anak kell ´ertelmezni, ´esaz exponens eltol´as´atis eggyel cs¨okkenteni kell (azaz p´eld´aul excess-15-r˝ol excess-14-re):

13 3.6.6. p´elda. Az IEEE binary16 form´atumban t´arolt 0000 0000 0000 0001 bitminta ´ertelmez´ese: el˝ojel: 0, exponens: 00000, exponens ´ert´eke: mivel az exponens t´arolt ´ert´eke 0, az eredeti (excess- 15) ´ertelmez´es (0 − 15 = −15) helyett a m´odos´ıtott sz´am´ıt´asi m´od(excess-14) szerint: 0 − 14 = −14, mantissza: 0000000001, kieg´esz´ıtve a nem t´arolt bittel: 0.0000000001, azaz a t´arolt sz´am: 0.0000000001 · 2−14 = 2−24. Ez az IEEE binary16 form´atumban t´arolhat´olegkisebb ´ert´ek. 3.6.7. p´elda. Az IEEE binary16 form´atumban t´arolt 0000 0000 0000 0010 bitminta ´ertelmez´ese: el˝ojel: 0, exponens: 00000, exponens ´ert´eke: mivel az exponens t´arolt ´ert´eke 0, az eredeti (excess- 15) ´ertelmez´es (0 − 15 = −15) helyett a m´odos´ıtott sz´am´ıt´asi m´od(excess-14) szerint: 0 − 14 = −14, mantissza: 0000000010, kieg´esz´ıtve a nem t´arolt bittel: 0.0000000010, azaz a t´arolt sz´am: 0.0000000010 · 2−14 = 2−23 = 2 · 2−24. 3.6.8. p´elda. Az IEEE binary16 form´atumban t´arolt 0000 0000 0000 0011 bitminta ´ertelmez´ese: el˝ojel: 0, exponens: 00000, exponens ´ert´eke: mivel az exponens t´arolt ´ert´eke 0, az eredeti (excess- 15) ´ertelmez´es (0 − 15 = −15) helyett a m´odos´ıtott sz´am´ıt´asi m´od(excess-14) szerint: 0 − 14 = −14, mantissza: 0000000011, kieg´esz´ıtve a nem t´arolt bittel: 0.0000000011, azaz a t´arolt sz´am: 0.0000000011 · 2−14 = 3 · 2−24. Ha az IEEE binary16 form´atumban t´arolhat´om´asodik legkisebb pozit´ıv sz´amb´ol(l´asda 3.6.7. feladatot) kivonjuk az ´abr´azolhat´olegkisebb pozit´ıv sz´amot(l´asda 3.6.6. feladatot), akkor ered- m´enyul¨ 2−24-et kapunk, ami szint´en ´abr´azolhat´o. ´Igy az IEEE 754 sz´am´abr´azol´asim´odszerrel b´armely k´et nem nulla ´abr´azolhat´osz´amkul¨ ¨onbs´egekiz´ar´olag akkor nulla, ha a k´etsz´ammeg- egyezik. Ez egy nagyon fontos numerikus tulajdons´ag! 3.6.9. p´elda. Az IEEE binary16 form´atumban t´arolt 0000 0000 0000 0000 bitminta ´ertelmez´ese: el˝ojel: 0, exponens: 00000, exponens ´ert´eke: mivel az exponens t´arolt ´ert´eke 0, az eredeti (excess- 15) ´ertelmez´es (0 − 15 = −15) helyett a m´odos´ıtott sz´am´ıt´asi m´od(excess-14) szerint: 0 − 14 = −14, mantissza: 0000000000, kieg´esz´ıtve a nem t´arolt bittel: 0.0000000000, azaz a t´arolt sz´am: 0.0000000000 · 2−14 = 0. 3.6.10. p´elda. Az IEEE binary16 form´atumban t´arolt 1000 0000 0000 0000 bitminta ´ertelme- z´ese: el˝ojel: 1, exponens: 00000, exponens ´ert´eke: mivel az exponens t´arolt ´ert´eke 0, az eredeti (excess-15) ´ertelmez´es(0 − 15 = −15) helyett a m´odos´ıtott sz´am´ıt´asim´od(excess-14) szerint: 0−14 = −14, mantissza: 0000000000, kieg´esz´ıtve a nem t´arolt bittel: 0.0000000000, azaz a t´arolt sz´am: −0.0000000000 · 2−14 = −0. A nulla k´etfajta t´arol´asi m´odj´anakaz a jelent˝os´ege,hogy jelezhet˝o,hogy az alulcsordult sz´am milyen ir´anyb´olk¨ozel´ıtette meg a null´at. (Hasonl´oanjelezzuk¨ p´eld´aul a hat´ar´ert´ek sz´am´ıt´asn´al, hogy a null´atmilyen ir´anyb´olk¨ozel´ıtjuk¨ meg: limx→0− f(x) illetve limx→0+ f(x)) A http://babbage.cs.qc.cuny.edu/IEEE-754/index.xhtml oldalon kipr´ob´alhat´ok, ellen˝orizhe- t˝okaz ´atv´alt´asok.

3.6.3. V´egtelenek ´esa NaN Az IEEE 754 lebeg˝opontos sz´am´abr´azol´asoka val´ossz´amokon k´ıvul¨ k´epesek t´arolni a ∞-t ´es −∞-t, tov´abb´aa speci´alis NaN (Not a Number) ´ert´eket. Ez ut´obbit kapjuk eredm´enyul¨ (t¨obbek k¨oz¨ott) akkor, ha null´atnull´aval osztunk vagy ha negat´ıv sz´amb´olvonunk n´egyzetgy¨ok¨ot. Ha az exponens minden bitje 1 ´esa mantissza nulla, akkor az (el˝ojelt˝olfugg˝oen)¨ ±∞ az ´abr´azolt ´ert´ek, ha a mantissza nem nulla, akkor NaN az ´abr´azolt ´ert´ek.

3.6.11. feladat. Adjuk meg a legnagyobb binary16-ban ´abr´azolhat´osz´amot!

3.7. Numerikus matematika A numerikus matematika foglalkozik m´armegl´ev˝osz´am´ıt´asialgoritmusok vizsg´alat´aval illetve olyan ´uj algoritmusok tervez´es´evel, amelyek figyelembe veszik, hogy a sz´am´ıt´og´epen v´egrehajtott sz´am´ıt´assor´anaz el˝oz˝oekben ismertetett hib´akaz egym´asut´anv´egzett m˝uveletek sor´anne n˝ojenek olyan nagyra, hogy mag´anak az eredm´enynek a haszn´alhat´os´ag´atvesz´elyeztetn´ek.

14 4. Karakterek ´esk´odol´asuk 4.1. Karakterek ´es karakterk´eszletek A karaktert [character] (a sz´amhoz hasonl´oan) fogalomnak tekintjuk,¨ amit meg kell tudni jelen´ı- teni ´ırott form´aban, illetve el kell tudni t´arolni a mem´ori´aban vagy b´armely m´ast´arol´oeszk¨oz¨on, f´ajlban, illetve tov´abb´ıtani kell tudni egy informatikai h´al´ozaton. Karakter lehet az ABC egy bet˝uje, egy sz´am,egy ´ır´asjel (a sz´ok¨ozt is bele´ertve) vagy egy´ebm´as´ır´asrendszerben haszn´altjel illetve vez´erl˝okarakter (p´eld´aul soremel´es)is. Karakterk´eszlet [character set, charset] alatt karakterek kiv´alasztott csoportj´at´ertjuk¨ (a kiv´a- laszt´aslehet tetsz˝oleges, de ´altal´aban valamely orsz´ag,nemzetis´eg,nyelv, r´egi´oalapj´ant¨ort´enik).

4.2. Karakterek k´odol´asa Karakterek k´odol´asa [, coded character set] alatt a karakterekhez valamilyen ´ert´ek(k´od) rendel´es´et´ertjuk.¨ Ilyen p´eld´aul a Morze-k´od, ami karakterekhez hosszabb ´es r¨ovidebb impulzusokb´ol´all´ok´odokat rendel (amiket azt´ank¨onnyen lehet tov´abb´ıtani p´eld´aul egy r´adi´o ad´o-vev˝osegts´eg´evel), vagy a Braille-k´od, ami karakterekhez 3D objektumokat rendel (amit azt´anmegfelel˝otechnol´ogi´aval kinyomtatva” l´at´asukban s´erult¨ emberek is k´epesek elolvasni). ” Az informatik´aban a karakterk´odol´as´altal´abana karakterhez egy sz´amrendel´es´etjelenti (amit azt´anvalamilyen m´odszerrel t´arolunk). Pl: a 65 jelentse az A” bet˝ut. ” Karakterek t´arol´asi form´aj´an [characer encoding form, character encoding scheme] a karakter k´odok(sz´amok) konkr´et t´arol´asi m´odj´at´ertjuk.¨ Ez lehet trivi´alis, p´eld´aul hogy egy megfelel˝o hossz´us´ag´u,eg´eszek t´arol´as´ara haszn´alt ´abr´azol´astalkalmazunk, vagy lehet szofisztik´altabb, p´el- d´aulegy t¨om¨orebb – de bonyolultabb – v´altoz´ok´odhossz´us´ag´uk´odol´aseset´eben. Pl. a 65-¨ot egy b´ajtos el˝ojel n´elkuli¨ eg´eszk´ent ´abr´azolva a 01000001 jelenti az A” bet˝ut. ” Egyes k´odol´asim´odszerek egyszerre meghat´arozz´aka karakterek k´odol´as´at´esa k´odokt´arol´asi form´aj´at. Tipikusan ilyen k´odol´asi m´odszerek a klasszikus k´odt´abl´ak[, character map, charmap], amelyek el˝ojel n´elkuli¨ eg´eszk´ent, egy b´ajton ´abr´azolnak egy karaktert.

4.3. Klasszikus k´odt´abl´ak 4.3.1. Az ASCII k´odt´abla Az American Standard Code for Information Interchange (ASCII) 7-bites k´odt´abla l´athat´oa 11. ´abr´an. Az egyes karakterek k´odja a karakter sor´anak´esoszlop´anakfejl´ec´eb˝olad´odik: p´eld´aul a @ k´odja 0x40, a W k´odja 0x57.

11. ´abra. Az ASCII 7-bites k´odt´abla (forr´as: wikipedia.org/wiki/ASCII)

Nagyon fontos kiemelni, hogy az ASCII k´odt´abla 7-bites, azaz 128 karakter k´odol´as´ara alkalmas. Ha 8-biten t´aroljuk vagy tov´abb´ıtjuk, a legnagyobb helyi´ert´ek˝ubitet null´ara´all´ıtjuk.

15 4.3.1. feladat. A home1.paulschou.net/tools/xlate/ honlapon ellen˝orizhet˝okaz ASCII karakte- rek bin´aris ´atv´alt´asai.

4.3.2. Az ISO 8859-X k´odt´abl´ak Az ISO/IEC 8859-X k´odt´abl´akaz ISO ´esaz IEC szabv´anyos´ıt´otestuletek¨ k¨oz¨os k´odt´abl´ai, c´eljuk, hogy min´elt¨obb region´alis karaktert tartalmazzanak. Az ASCII k´odt´abla az ISO 8859-X k´od- t´abl´akr´esze, azaz minden ASCII k´odegyben ´erv´enyes ISO 8859-X k´odis. Mi a leggyakrabban az ISO 8859-1 (nyugat-eur´opai) ´esaz ISO 8859-2 (k¨oz´ep-eur´opai) k´odt´abl´akkal tal´alkozhatunk, ezeket szok´aslatin-1 ´eslatin-2 k´odt´abl´aknak is nevezni. Az ISO 8859-1 k´odt´abl´atISO 8859-15 (latin-9) n´even friss´ıtett´ek (t¨obbek k¨oz¨ott belekerult¨ az euro karakter), ´es hasonl´ot¨ort´ent az ISO 8859-2-vel is: ISO 8859-16 (latin-10) n´even friss´ıtett´ek.

4.3.3. A Windows k´odt´abl´ak Az ASCII kiterjeszt´es´evel a Microsoft megalkotta saj´at8-bites k´odt´abl´ait, kul¨ ¨on-kul¨ ¨on egyes r´e- gi´okra. Mi a leggyakrabban a windows-1250 (k¨oz´ep-eur´opai) ´esa windows-1252 (nyugat-eur´opai) k´odk´eszletekkel tal´alkozhatunk. Ezeket szok´aswindows latin-2 illetve windows latin-1 k´odt´ab- l´aknak is nevezni. Szint´en fontos tulajdons´agaezeknek a k´odoknak is, hogy az ASCII-t m´odos´ıt´asn´elkul¨ tartal- mazz´ak, azaz annak csak kieg´esz´ıt´esei. Az ISO 8859-X k´odt´abl´ak´es a windows-xxxx k´odt´abl´ak nagy r´eszben egyeznek (nem kiz´ar´olaga k¨oz¨os ASCII r´eszek), de nem teljes m´ert´ekben kompa- tibilisek egym´assal.

4.3.4. Feladatok 4.3.2. feladat. Megv´altozik-e egy adott ASCII karaktert t´arol´ob´ajt, ha el˝ojeles vagy el˝ojel n´elkuli¨ eg´eszk´ent t´aroljuk? 4.3.3. feladat. Keressuk¨ meg az ISO 8859-1, az ISO 8859-2, a windows-1250 ´esa windows-1252 k´odt´abl´akkioszt´asait!

4.3.4. feladat. Helyes eredm´enyt kapok, ha egy ASCII k´odolt karakterekb˝ol´all´of´ajlt a.) windows- 1250 b.) windows-1252 k´odt´abl´akalapj´anpr´ob´alom´ertelmezni? 4.3.5. feladat. Mi lehet a magyar´azata annak, hogy r´egebben (sajnos sokszor m´egma is) az ˝o illetve O˝ bet˝ukhelyett (hib´asan) ˜ovagy O˜ szerepelt?

4.3.6. feladat. Tudunk-e t¨obb, kul¨ ¨onb¨oz˝ok´odk´eszlethez tartoz´okaraktert egyetlen sz¨ovegf´ajl- ban t´arolni (´esazokat helyesen megjelen´ıteni olvas´askor)?

4.3.7. feladat. Adjunk p´eld´atolyan sz¨ovegf´ajlra, ami nem csak ASCII karaktereket tartalmaz, de m´egis azonos m´odon´ertelmezhet˝oa.) ISO 8859-2 ´eswindows-1250 b.) ISO 8859-1 ´eswindows- 1252 k´odt´abl´akkal!

4.4. A Unicode Az el˝oz˝oekben ismertetett k´odt´abl´akk¨oz¨os probl´em´aja,hogy ¨onmagukban nem k´epesek t¨obb nyelv˝usz¨ovegek t´arol´as´ara(s˝ot, egyes esetekben m´eg egyetlen nyelv eset´eben sem, p´eld´aul: k´ınai, jap´an), mivel a – 8 bites t´arol´asb´olad´od´o– lehets´eges256 kul¨ ¨onb¨oz˝okarakter nyilv´annem elegend˝oa vil´ag ¨osszes nyelv´eben haszn´alt bet˝u´es ´ır´asjel ´abr´azol´as´ara. Ennek a probl´em´anaka megold´as´araj¨ott l´etre a Unicode konzorcium, ami l´etrehozta ´eskarbantartja a Unicode aj´anl´ast. A konzorcium 2014 ut´anminden ´evben j´uniusban kiad egy f˝overzi´osz´am´ufriss´ıt´est (2014 - 7.0, 2015 - 8.0, stb.). A szabv´any k¨ozel sz´az´ır´asrendszert ´est¨obb, mint sz´azezer karaktert tartalmaz, amik k¨oz¨ott ´el˝o´esholt nyelvek mellett megtal´alhat´okmatematikai ´es egy´eb szimb´olumok is. 4.4.1. feladat. A www.unicode.org/charts/ oldalon n´ezzuk¨ meg a Unicode ´altal t´amogatott karaktereket!

16 A Unicode azonos az ISO/IEC 10646 szabv´annyal. A Unicode egy karakter k´odol´asiszabv´any (figyelem, ¨onmag´aban nem k´odt´abla!), ami meghat´arozza, hogy egy konkr´etkarakternek mennyi a Unicode ´ert´eke []. Altal´abanU+hexa´ k´odform´abanjel¨oljuk:¨ p´eld´aulaz euro jel k´odja: U+20AC. Ezt a Unicode ´ert´eket kul¨ ¨onb¨oz˝om´odokon lehet t´arolni.

4.4.1. Az UTF-8 Az UTF-8 a Unicode egy t´arol´asiform´aja (Unicode Transformation Format) ami a Unicode k´odokat v´altoz´ohosszon, 1-6 b´ajton t´arolja, a k´od´ert´ek´et˝olfugg˝oen.¨ Mivel a Unicode-ban jelenleg nincsen 0x10FFFF-n´elnagyobb code point, ez´ert nincs 4 b´ajtn´alhosszabb UTF-8 k´oda gyakorlatban. Az UTF-8 legfontosabb tulajdons´agai:

• ASCII kompatibilis, azaz minden ASCII sz¨oveg egyben helyes UTF-8 sz¨oveg is, • ¨onszinkroniz´al´o,azaz nem kell az UTF-8 b´ajtsorozat elej´er˝olkezdeni az olvas´ast, hogy pontosan el lehessen hat´arolni az egyes karaktereket reprezent´al´oUTF-8 byte csoportokat.

4.4.2. Az UTF-16 Az UTF-16 t´arol´asiforma v´altoz´ohosszon, 2-4 b´ajton t´arolja a Unicode k´odokat. Nem ASCII kompatibilis.

4.4.3. Az UTF-32 Az UTF-32 t´arol´asiforma fix hosszon, 4 b´ajton t´arolja a Unicode k´odokat. A k´odol´asnagyon egyszer˝u: az Unicode k´odokat kell 4 b´ajtos eg´eszekk´ent t´arolni. Nem ASCII kompatibilis.

4.4.4. Feladatok 4.4.2. feladat. Hogyan befoly´asolj´aka t´arol´asi m´eretet a haszn´alt karakterek? Mikor ´erdemes az UTF-8 ´esmikor az UTF-16 k´odol´asiform´atv´alasztanunk?

4.4.3. feladat. Az UTF-8 ¨onszinkroniz´al´otulajdons´ag´anakmilyen szerepe van a • v´eletlenul¨ kiv´alasztott poz´ıci´ob´olt¨ort´en˝omegjelen´ıt´esre, • a hib´as´atvitelb˝olad´od´o´ertelmez´esi probl´em´akra?

4.4.4. feladat. Az UTF-8, UTF-16, UTF-32 k´odol´asokk¨ozul¨ melyek alkalmasak sz¨ovegek v´e- letlenszer˝uel´er´es´ere (azaz p´eld´aul ha az x. karakterhez akarok k¨ozvetlenul¨ ugrani)?

4.5. Sz¨ovegf´ajlok Ha egy f´ajlban csak sz¨oveget akarunk t´arolni (pontosabban csak olyan karaktereket, amelyek mindegyike megtal´alhat´oegy kiv´alasztott karakterk´eszletben), akkor nincs m´asdolgunk, mint a karakterek (k´odt´abl´aja vagy valamely Unicode t´arol´asi form´aja szerinti) b´ajtjait egym´asut´an ´ırni, ´esezt elt´arolni. Val´oj´abanis ez t¨ort´enik, ezeket a f´ajlokat nevezzuk¨ egyszer˝usz¨ovegf´ajloknak [plain text file], kiterjeszt´esuk¨ (´altal´aban): TXT.

4.6. Feladatok 4.6.1. feladat. Hasonl´ıtsuk ¨ossze a 7 t´arol´asi form´ait: a.) el˝ojel n´elkuli¨ eg´eszk´ent, b.) kettes komplemens ´abr´azol´as´uel˝ojeles eg´eszk´ent, c.) ASCII k´odol´assald.) UTF-8 k´odol´assal!

4.6.2. feladat. Honn´et tudjuk, hogy egy sz¨ovegf´ajlbeolvas´asakor a k´odokat melyik k´odt´abla szerint kell ´ertelmeznunk?¨ 4.6.3. feladat. Puszt´ana sz¨ovegf´ajlba t¨ort´en˝obeleolvas´assal eld¨onthet˝o-e ´altal´anosesetben, hogy az milyen k´odt´abla szerint ´ertelmezend˝o?

17 4.6.4. feladat. T¨oltsunk¨ be a b¨ong´esz˝onkbe egy sz¨ovegf´ajlt, majd m´odos´ıtsuk a k´odt´abl´at! K´odoljuk ´ata sz¨ovegf´ajlt a iconv parancs seg´ıts´eg´evel, ´esn´ezzuk¨ meg az eredm´enyt a b¨ong´esz˝ovel illetve az od programmal!

4.6.5. feladat. T¨oltsuk¨ be a www.itk.ppke.hu/oktatas oldalt, ´es a b¨ong´esz˝onkben ´all´ıtsuk ´ata karakterk´eszletet! Mi t¨ort´enik?

4.6.6. feladat. Mi a mojibake? (Keressunk¨ r´a!) 4.6.7. feladat. Ha ´ekezetes karaktereket haszn´alunk egy SMS-ben, akkor van-e kul¨ ¨onbs´egaz egy SMS-ben elkuldhet˝okarakterek¨ sz´amak¨oz¨ott, ha magyar (jobbra d˝ol˝o)´ekezetekkel rendelkez˝o karaktereket vagy csak balra d˝ol˝o´ekezetekkel rendelkez˝okaraktereket haszn´alunk? Indokoljuk meg!

18