INFORMATIKAI ALAPOK SZÁMRENDSZEREK. DIGITÁLIS SZÁMÁBRÁZOLÁS ÉS MŰVELETEK Dr. Vári-Kakas István főiskolai tanár A tízes (decimális) számrendszer A tízes számrendszer alapszáma a 10. Az egyes számjegypozíciókhoz a tizedesjeltől balra a 100, 101, 102 stb. helyi értékek, míg a tizedesjeltől jobbra a 10-1, 10-2, 10-3 stb. helyi értékek vannak hozzárendelve helyértékes számrendszer: 135 = 1 x 102 + 3 x 101 + 5 x 100 123,45 = 1 x 102 + 2 x 101 + 3 x 100 + 4 x 10-1 + + 5 x 10-2 2/41 A kettes (bináris) számrendszer A kettes számrendszer alapszáma a 2. Két számjegy: „0” és „1” helyi értékű 3/41 A tizenhatos (hexadecimális) számrendszer Alapszáma 16. Hexadecimális karakterek: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F Példa: - decimális szám: 26 - bináris ábrázolása: 11010 - hexadecimális számmal: 1A Egy hexadecimális számjegy négy bináris számjeggyel ábrázolható (16=24). 4/41 5/41 Decimális-bináris átalakítás 14 7 7 3 3 14 0 1 1110 1 0 6/41 A decimális egészrészt addig osztjuk kettővel, amíg az osztás eredménye nulla nem lesz: 7/41 A törtrészt addig szorozzuk kettővel, amíg a szorzás eredménye 1,0 (kereken egy) nem lesz. A szorzást csak a törtrésszel folytatjuk (mindig 1-nél kisebb számot szorzunk): 8/41 Megtörténhet, hogy nem végződik nullára a törtrész, ezért gyakran keletkezik végtelen kettedes tört: Kettes számrendszerben ez végtelen, szakaszos tört; tehát elvileg végtelen sok hely kell a tárolásához. 9/41 0,63=?(2) Nyolc értékes jegyig végezzük el az átváltást! 10/41 123,45=?(2) 11/41 Próba: a. egészrész 1 2 1 2 1 2 1 2 0 2 1 2 1 2 64 32 16 8 0 2 1 123 6 5 4 3 2 1 0 b. törtrész x 0,011100 2 4 x 11100 , 2 2 x 11100,1100 2 6 2 6 4 x 11100 2 1 27 9 60 x 27 x 0,45 20 12/41 Bináris-decimális átalakítás 11102 = 1 x 23 + 1 x 22 + 1 x 21 + 0 x 20 = = 1 x 8 + 1 x 4 + 1 x 2 + 0 = 1410 13/41 Bináris-hexadecimális átalakítás A bináris szám négyes csoportosításával: 1001101,0111(2) = 0100 1101,0111(2) = 4D,7(H) 11 1001 1111 0110 b = 39F6 h 14/41 Bináris számok összeadása 0 15/41 Bináris számok kivonása Két szám különbségét a számítógép komplemensképzési és összeadási művelettel állítja elő. A komplemens: az a szám, amelyik az ábrázolható számnál 1-gyel nagyobbra egészíti ki az adott számot. 10-es számrendszerben legyen pl. az adott szám 273, és keressük a komplemensét: 273 = 1000 – 273 = 727 16/41 Egy szám komplemense Kettes számrendszerben a ‒6 komplemense (k=8 ábrázolható számjegy esetén): 2 8: ‒6: Más megoldás: 17/41 Egyes és kettes komplemens 18/41 Kettes komplemens képzése A számítógépben egyes komplemensből: Gyakorlati módszer: 19/41 Előjeles számok összevonása +8 ‒6 = +2 +8 + (‒6) = +2 (+8) (‒6) (+2) 20/41 Fontos összefüggések • Bináris számjegy (binary digit – bit): 0, 1 • 8 bites egység: bájt (byte) • Hagyományos bináris prefixumok: 210 = 1024 = 1 K (kilo) 220 = 1024 K = 1 M (mega) 230 = 1024 M = 1 G (giga) 240 = 1024 G = 1 T (terra) n db. 0 2n = 100……………..00 n db. 1 2n ‒ 1 = 11……………..11 • n bites kombinációk száma: 2n • Egész szám 2-vel való szorzása: a szám végére 0 21/41 Bináris prefixumok 1998 decemberében az IEC (International Electrotechnical Commission) ajánlást tett közzé a bináris prefixumok bevezetésre: • Az első szótagot örökli az SI-rendszerből, és ezt a jelölésben nagybetűvel írjuk. • A második szótag mindig bi, amely a bináris jellegre utal. Ezt a jelölésben kis i betű mutatja. Szorzófaktor Név Jelölés 210 220 230 240 250 260 kibi mebi gibi tebi pebi exbi Ki Mi Gi Ti Pi Ei Decimális megfelelő Bináris kilo: (210)1 kilo: (103)1 Bináris mega: (210)2 mega: (103)2 Bináris giga: (210)3 giga: (103)3 Bináris tera: (210)4 terra: (103)4 Bináris peta: (210)5 peta: (103)5 Bináris exa: (210)6 exa: (103)6 Eredet 22/41 Nevezetes számok decimális (10) bináris (2) hexadecimális (16) 0 255 +127 ‒128 65535 +32767 ‒32768 0000 0000 1111 1111 0111 1111 1000 0000 1111 1111 1111 1111 0111 1111 1111 1111 1000 0000 0000 0000 00h FFh 7Fh 80h FFFFh 7FFFh 8000h 23/41 SZÁMÍTÓGÉPES SZÁMÁBRÁZOLÁS • Fixpontos • Lebegőpontos • Binárisan kódolt decimális (BCD) 24/41 Fixpontos számok A szám kettes számrendszerbeli számjegyeit tároljuk helyi értékeiknek megfelelően egy rögzített nagyságú memóriaterületen: • 1 bájt méretű (byte) • 2 bájt méretű (word) • 4 bájt méretű (double word) • 8 bájt méretű (quad word) 25/41 Előjel nélküli számok A kettedes pontnak rögzített a helye. A számítógépben a fixpontos számokat egész számként értelmezik: 8 bites a fixpontos szám: 28= 256 kombináció az ábrázolható számok tartománya 000000000 = 010-tól 111111112 = 255-ig terjed 26/41 16 bitből álló fixpontos szám: a legkisebb ábrázolható érték 0, a legnagyobb pedig 216-1=65535 Két 16 bites szám összeadása: Ha átvitel (carry) keletkezik a legmagasabb helyiértékből túlcsordulás 27/41 Előjeles számok A legnagyobb helyi értékű bitet előjelbitnek használjuk: 0 a „+”-nak, 1 a „‒”-nak felel meg: 2 bájton a legnagyobb ábrázolható szám: Nmax = +(215‒1) = +32767 28/41 Negatív számok A fixpontos negatív számokat kettes komplemensben ábrázoljuk a számítógépben. 29/41 Műveletek 1. 30/41 Műveletek 2. 31/41 Lebegőpontos számok Decimális lebegőpontos ábrázolás: +4,74x10-3 Bináris lebegőpontos ábrázolás ±m x 2±e m - mantissza vagy törtrész e - exponens 32/41 Példa A fenti példa egy nullára normalizált esetet mutatott be: a kettedes vessző után közvetlenül jön a legmagasabb helyi értékű 1-es. 33/41 ANSI/IEEE 754/854-es szabvány 1-re normalizált alak (1mantissza<2): 1.abc… Az exponens növelt (pl. 8 biten 127-tel) értékét (karakterisztika) tárolják, hogy mindig pozitív legyen. Kar. Kar. Kar. 34/41 35/41 Binárisan kódolt decimális számok (BCD – Binary Coded Decimal) A szám minden decimális számjegyét helyi értékenként 4 bittel ábrázolnak: 36/41 Tömörített (pakolt – packed, csomagolt) BCD: Mindegyik számjegy 4 biten tárolódik. Példa: 2006 BCD kódú alakja (hexában is kiolvasva): 0010 0000 0000 0110 b = 2006h Zónázott (pakolatlan – unpacked, csomagolatlan) BCD: Egy-egy számjegy 8 biten tárolódik. A felső 4 bit általában nulla (esetleg az előjelet tartalmazza). Példa: 1992 BCD-ben (hexában is kiolvasva): 00000001 00001001 00001001 00000010 = 01090902h 37/41 Összeadás BCD kódban 3: 0011 +4: 0100 7: 0111 3: 0011 +9: 1001 ?: 1100 korrekció +6: 0110 12: 1 0010 Érvénytelen kód (vagy átvitel) esetén korrekció szükséges. 38/41 Karakterek kódolása Az ASCII kód (American Standard Code for Information Interchange) 7 bites kód ( 27=128 karakter) 1 bájtot használ: 7 bit + 1 paritásbit Kibővített ASCII kód 256 karakter lehetősége kódlapok (pl. 437-es IBM PC) A különböző írásrendszerek kódolására elterjedt szabvány: UNICODE 8-, 16-, 32bites formátumok 39/41 ASCII kód A karakterkészlet: • 26 nagybetű (A, B, C, …) • 26 kisbetű (a, b, c, …) • 32 írásjel és számjegyek (+, :, %, 1, 2, 3, …) • 12 speciális jel ({, }, \, …) • 32 vezérlőkód (LF, CR, …) 40/41 Paritásbit Karakterek ASCII kóddal ábrázolt karakterek páros paritás-ellenőrzés esetén: 41/41 Ellenőrző kérdések 1. Miért van szükség a számítástechnikában 16-os számrendszerre? 2. Milyen nehézség adódhat a tárolással bizonyos tizedes törtek átváltásánál kettes számrendszerbe, és ennek mi a következménye? 3. Adja meg két bit összeadásának táblázatát! 4. Mit nevezünk egy szám komplemensének? 5. Mi egy bináris szám egyes komplemense? Hogyan számítjuk ki a szám kettes komplemensét? 6. Mi a bit, a bájt és melyek a többszöröseik? 7. Hogy kezeli a számítógép a fixpontos számokat? 8. Hogyan ábrázoljuk a számítógépben a fixpontos előjeles számokat? 9. Milyen egy bináris lebegőpontos szám alakja? Mi az 1-re normalizált alak? 10. Milyen hátrányai vannak a BCD-számoknak tárolásnál és összeadásnál? 11. Hány karaktert lehet kódolni a 8-bites ASCII kódban? Mire szolgál a paritásbit?