INFORMATIKA ALAPJAI - I
1 BEVEZETŐ... 3 2 A HARDVER FELÉPÍTÉSE... 4 2.1 AZ INTEL 8086 PROCESSZOR FELÉPÍTÉSE:... 4 2.2 BLOKKVÁZLAT.... 4 3 A SZÁMÍTÓGÉP ÉS AZ INFORMATIKA... 5 3.1 INFORMATIKAI ALAPFOGALMAK... 5 3.1.1 Informatikai fogalmak értelmezése... 5 3.1.2 A közlemény forrása, az adó:... 5 3.1.3 A közlemény szállítása a csatorna:... 6 3.1.4 A közlemény vétele a vevő:... 6 3.1.5 A közlemény áramlása:... 6 3.2 AZ INFORMÁCIÓ:... 6 3.3 AZ INFORMATIKA:... 7 3.4 ADAT:... 7 3.4.1 A karakterek csoportosítása:... 8 3.4.2 Adatfeldolgozás... 8 3.5 KÓDOLÁS:... 8 3.6 ALGORITMUS... 9 4 A NEUMANN TÍPUSÚ SZÁMÍTÓGÉP... 9 4.1 JELLEMZŐI... 9 4.1.1 Bináris feldolgozás... 10 4.1.2 Számrendszerek... 10 4.1.3 Számrendszerek közötti átalakítás... 11 4.1.4 Számábrázolás... 14 4.1.4.1 Bináris számábrázolás... 15 4.1.4.2 Decimális számok ábrázolása BCD... 20 4.1.4.3 Pakolt BCD alak... 21 4.1.4.4 Zónás BCD alak... 22 4.1.5 Műveletek számrendszerekben... 23 4.1.5.1 Összeadás... 23 4.1.5.2 Kivonás... 24 4.1.5.3 Szorzás... 29 4.1.5.4 Osztás... 31 4.1.5.5 Műveletek összeadása... 32 4.1.6 Művelet számábrázolt értékekkel.... 32 4.1.6.1 Műveletek fixpontos ábrázolásban... 33 4.1.6.2 Műveletek lebegőpontos ábrázolásban... 36 2
1 Bevezető A számítógép felépítésén a processzort és az őt kiszolgáló áramköröket (hardver), valamint az áramköri vezérléseket biztosító programok (szoftver) összességét értjük. Egy számítógép hardver és szoftver együttes felépítését a számítógép architektúrájának nevezzük. Az architektúra nem külön hardver és szoftver lehetőséget jelent, hanem kölcsönösen a szoftver által, a hardveren kialakítható adattípusok, az azokon elvégezhető műveletek, majd az előzőek által létrehozható szolgáltatások összességét értjük. Az architektúra tehát egy virtuálisan felépített hardver, melyet szoftverek összességével tudunk működtetni és ennek eredményeként szolgáltatásokat produkálni. A virtuális hardver egy olyan számítógép hardverrésze, melyet a programozó szoftvere optimális kihasználtságra kényszerít. Természetesen ennek biztosítása igen nehéz, mivel a hardverfejlesztést a programozók, a programfejlesztést az alkatrész gyártók követelik meg. Talán soha nem volt olyan helyzet, hogy egymás termékét ideálisnak tekintették volna. A processzorgyártók által ajánlott chipkészlet működtetésére alkalmas szoftvert különböző programozói nyelven íródhat, melynek a hardverre kifejtett hatása közvetlen, vagy közvetett esetleg többszörösen közvetett. Ezek a programok (szoftverek) a hardvertől való távolságuk miatt, létrehozásaikban, utasításaikban, műveleteikben és adatszerkezeteikben eltérnek egymástól. A különböző szinteket vezérlő szoftvereket a számítógép fejlődése szerint generációkba sorolták, melyet 1-5-ig adtak meg. Minden processzor és környezete a digitális technikában alkalmazott logikai szintekhez rendelt, a chipkészlet által igényelt, egy bizonyos értékű villamos feszültséget vagy áramot tud értelmezni. A villamos feszültség és áram értékének beállítása az alkatrész tervezők feladata, mely nagymértékben függ az alkalmazott félvezető alapanyagtól, a szennyezőanyagtól és a szennyezés mértékétől. Elfogadjuk a pozitív logika szabályait, ami az igaz értékhez rendel 1-et, egy a hardver által érzékelhető emeltebb villamos mennyiségi értéket, és a hamis értékhez 0-át, a hardver által nulla körüli villamos mennyiséget. A processzor és chipkészlete csak ezeket az értékeket ismeri fel egyenként, vagy egyszerre csoportosan. Az értékeket adatnak nevezzük, ahol az időben egy vezetéken, egymást követő értékeket soros adatátvitelnek, míg több vezetéken egy időpillanatban értelmezett értékeket párhuzamos adatátvitelnek nevezzük. A számítógép programozása egyrészt a hardverelemek vezérlését-, másrészt különböző, a hardverelemek vezérléséből adódó szolgáltatások felhasználását jelenti. Annak érdekében, hogy a feladat megoldása optimális legyen, a megfelelő programozási nyelvet kell választani. A hardver programozását az 1 generációs programozási nyelvek valósítják meg. Ezek a programozási nyelvek olyan tulajdonságokkal rendelkeznek, ami a hardver közeli architektúrának tökéletesen megfelelnek. Az első generációs nyelvekhez tartozik az assembly programozási nyelv, elemi szimbólumokkal felépített utasításaival közvetlen elérést biztosít a hardver felé. 3
2 A hardver felépítése Egy számítógép hardver felépítését a processzor határozza meg. Az assembly programozás bemutatásához kiválasztott processzor az Intel által elsőként gyártott Intel 8086, amit a továbbiakban a gyártók a kompatibilis alkalmazásával minden további processzorban meghagytak. 2.1 Az Intel 8086 processzor felépítése: 2.2 Blokkvázlat. Az Intel 8086 processzor megalkotásakor kialakult a gépi kódú programozás az úgynevezett assembly nyelv. A nyelv megőrizte fontosságát, mert minden korszerű számítógépben megtalálható. Szimbolikus nyelv, forrásnyelve lényegében szimbolikus formája a gépi nyelvnek, ezért fordítóját assemblernek nevezzük. A tervezők az áramkört úgy alkották meg, hogy architektúrája alkalmas az assembly programok készítésére, de alkalmas a magasabb szintű programozási nyelvek fogadására. Közvetlen címzésű 1Mbájt memória rendelhető hozzá, 14 darab szavas, egyenként 16 bites regisztert tartalmaz, azonos fizikai felépítéssel, de más-más funkció hozzárendelésével, 24 címzési módot ismer fel. A műveleteket bit, bájt, szó és blokk méretben, 8 előjeles és 16 előjel nélküli aritmetikai, bináris és decimális műveletet tud elvégezni, beleértve a szorzás és az osztási műveleteket. EXECUTION UNIT REGISTER FILE DATA POINTER AND INDEX REGISTER (8 WORDS)) 16 BIT ALU FLAGS BUS INTERFACE UNIT RELOCATION REGISTER FILE SEGMENT REGISTER AND INSTRUCTION POINTER (5 WORDS) BUS INTARFACE UNIT 4 16 3 3 BHE / S 7 A / S 19 16 6 A / S 3 AD 15... AD 0 NTA, RD, WR DT / R, DEN, ALE GND AD 14 AD 13 AD 12 AD 11 AD 10 AD 9 AD 8 AD 7 AD 6 AD 5 1 2 3 4 5 6 7 8 9 10 11 40 39 38 37 36 35 34 33 32 31 30 MAX MOD V CC AD15 A 16/S3 A 17/S4 A18/S5 A 19/S6 BHE/S7 MN / MX RD RQ/ GT0 RQ/ GT1 MIN MOD HOLD HLDA TEST INT NMI RO / GT 0 HOLD HLDA 2 6 BYTE INSTRUCTION QUEUE CONTROL & TIMING 2 3 LOCK QS 0, QS 1 S, 2, S1 S0 AD 4 AD 3 AD 2 AD 1 AD 0 NMI INTR CLK GND 12 13 14 15 16 17 18 19 20 29 28 27 26 25 24 23 22 21 LOCK S 2 S 1 S 0 QS 0 QS 1 TEST REDY RESET WR M/ IO DT / R DEN ALE INTA CLK RESET READY MN / MX 3 GND V CC 2. ábra 8086 CPU blokkdiagram 1. ábra 8086 CPU lábbekötése Fizikai kialakítása n csatornás elzáródásos, szilikon kapu technológiájú (HMOS-III), 40 lábbal csatlakozó áramkör. Az áramkör minimum vagy maximum konfiguráció kialakításban 4
működik, a két üzemmódban az egyes lábak funkciója eltér, ezeket a bekötési rajz tartalmazza. Az átváltásról a 33 láb MN / MX lábon lévő jel gondoskodik. A lábfunkciókat legeredményesebben táblázatban lehet összefoglalni (3 melléklet). Az 1. ábra 8086 CPU blokkdiagram jobban elemezhető az 1 melléklet rajzon, az egyes blokkok funkciójáról szöveges információ található. A 2. ábra 8086 CPU lábbekötését a 2 melléklet tartalmazza nagyított, olvashatóbb formában. 3 A számítógép és az informatika A processzor és az azt kiszolgál integráltáramkörök megjelenésével megtörtént a számítógép hardver kialakítása. A számológép megjelenésével az egyszerűbb, majd az összetettebb matematikai műveletek gyors megoldására kaptunk megoldásokat. Már akkor felmerült a kérdés a nem matematikai formátumok tárolására és megőrzésére. Egy új, eddig nem alkalmazott értelmezhető jelrendszerre volt szükség. Az új nem szokványos jelrendszerhez új fogalmak kapcsolódtak, aminek kialakításával megindulhatott a számítástechnika fejlődése. A formátumtól független, de egyes embercsoportnak, de személyeknek is igen fontos új ismeretek átadásának lehetősége és az előzőek felismerése hatalmas fejlesztői és gyártói versenyt indított el a világban. 3.1 Informatikai alapfogalmak Kommunikációban keletkezett információ, a csoportban élők számára elengedhetetlenül szükséges a csoport megmaradásához. Feltételezhető, hogy az emberi beszéd kialakulása előtt már létezett valamilyen kommunikáció. A XX. században az elektronika fejlődése, a híradástechnika, illetve a hiradásipar megjelenése felgyorsította, a számítástechnika kialakítását, ami új fogalmakat hozott a hírközléselméleti fogalmak mellé. Megjelentek az informatikában használt fogalmak. 3.1.1 Informatikai fogalmak értelmezése A közlemény, csoport számára készült valemely érzékszervvel felismerhető közlés, aminek értelmezéséhez peciális tudást feltételez. A közlemény megjelenésétől a célbaéréséig egy utat jár be. A közlemény útja Adó forrás Csatorna Szállítás 3. ábra Vevő cél A közlemény útja a forrás, szállítás és a cél. Hírközléselméleti fogalmaknak a 3. ábra szerinti adó, csatorna és a vevő szavakat feleltethetünk meg. 3.1.2 A közlemény forrása, az adó: Az adó feladata, a közleményből értelmezhető jelsorozat előállítása és annak szállításra alkalmassá tétele. 5
Adó sokaságot lehet felsorolni. Lehet az adó egy beszélő ember, plakát, internet, rádió, tv stb, minden olyan ember vagy tárgy, aki vagy ami, egy harmadik személynek közölni szeretne valamit. 3.1.3 A közlemény szállítása a csatorna: Feladata a szállítási formák kialakítása, a közlemény adott csoporthoz és egyénhez deformációk nélkül, vagy még engedhető deformációkkal történő eljuttatása (zaj). A deformáció (zaj) az alkalmazott csatorna, mint eszköz, által létrehozott deformáció. (pl. újság betűhibái, rádió-tv bemondó rossz artikulációja). 3.1.4 A közlemény vétele a vevő: A vevő feladata a közlemény dekódolása, értelmezése. A vevő a közlemény dekódolása esetén lefordítja az adó által a csatornán keresztül adott jelsorozatot, majd saját korlátainak megfelelően értelmezi és elhelyezi a saját közleménytárában. 3.1.5 A közlemény áramlása: A közlemény iránya a csatornában különböző lehet és ezt nevezzük üzemmódnak. Ezek a szimplex, félduplex, duplex üzemmódok. Szimplex az üzemmód, ha a kijelölt csatornában a forrás és a cél nem változik, a közlés áramlása mindig a forrásból a cél felé írányul. (3. ábra) Ilyen csatornaműködést tapasztalunk a műsorszóró berendezésekkor, vagy egy könyv olvasása esetén. Félduplex üzemmódról akkor beszélünk, ha a közlés iránya úgy változik, hogy azt a forrás engedélyezi. Ekkor a forrás átadja a vevőnek a forrás tulajdonságait és egyidőben vevő lesz. Adó Félduplex csatorna Üzenet iránya Vevő t i időpont Üzenet íránya Vevő Adó t i+1 időpont 4. ábra Híradástechnikai példára hívatkoza a CB rádió működése, de ilyen egy leválváltás is, akár postai akár e-mail. Duplex üzemmódban nincs kijelölt adó vagy vevő, egyszerre lehet valaki adó is és vevő is, az intelligencia határozza meg, hogy ki az adó és ki a vevő. (Hagyom a másikat beszélni!) Duplex csatorna Adó Vevő Üzenet iránya Adó Vevő t i időpont 5. ábra 3.2 Az információ: Most már ismerjük a közlemény lényeges tulajdonságait, ezekből meg tudjuk határozni az információt. 6
Def.: Azok a különböző csatornán érkező közlemények, amelyek egy adott helyzetben a vevő által a saját korlátai szerint értelmezettek, azokat új közleményként fogadja el, majd saját bizonytalanságának csökkentésére használja föl, információnak nevezzük. A definíció szerint az információnak kettős tulajdonsága van, egyrészt új a közlemény az egyén vagy csoport számára, másrészt ismételt felhasználása a csoport vagy az egyén bizonytalanságát csökkenti. 3.3 Az informatika: Az információ kényszerűsége, szükségessége újszerű feldolgozása egy új tudományágat hozott létre. Def.: A kutatást, ami az információk keletkezésének lehetőségével, továbbításának eszközeivel, feldolgozásának és hasznosításának módszertanával foglalkozó tudományág, az informatika tudományágának nevezzük. Mai értelemben az informatika minden olyan tevékenység, ami információval kapcsolatos. Az igaz, hogy használatával felületes megközelítést és értelmezést eredményezhet, ha nem kellő átgondolással alkalmazzuk a fogalmat. A valós világban az ember cselekedeteit és reagálását az őt ért környezeti hatásokra, azok saját énje szerinti értelmezését, a tudatos, számára előnyös döntés meghozatalának elősegítésére az információ ad nagymérvű segítséget. Az előzőekből meghatározható az informatika első az egyén számára fontos fogalma, ami több mint a közlemény, ez az információ. Az információ az egyénnek döntéseinek meghozatalához ad támogatást és segítséget. Az információ egyénhez vagy csoporthoz továbbítása tartalomfüggetlennek kell, hogy legyen. Ez azért fontos, mert egy továbbító eszköz így többször felhasználható információ átvitelére. Az információt tartalmi jelentésétől megfosztva kialakítunk egy új jelsorozatot, az adatot. 3.4 Adat: Def.: Az információ - tartalomtól független- megjelenési formáját adatnak nevezzük. Az adat egy jelsorozat, melynek felépítése egy rendszeren belül azonos. A számítógépben különböző villamos jelekértékek, a gépgyártásban a gépek vezérléséhez szükséges jelek, de az ember által érzékelhető jeleket is adatnak nevezzük. Az ember a környezttől kapott adatokat érzékszerveivel teszi felfoghatóvá. Az ember kapcsolata a külvilággal a következő módon valósul meg. látás-> álló és mozgókép, hallás-> beszéd, zene és zörej, tapintás-> nyomás és hőérzet, szaglás-> kellemes és kellemetlen illatok. Ha az adatot leszűkítjük a számítástechnika területére, akkor a látás és a hallás által szolgáltatott érzékszervi adatokkal képzett információ, jellemző e területre. A számítástechnikában látásra, tapintásra épülő leggyakrabban megjelenő adat az írott vagy nyomtatott szöveg. 7
A szöveg legkisebb eleme a karakter. 3.4.1 A karakterek csoportosítása: A betűk Nagybetűk (A,B,C Z) Kisbetűk (a,b,c z) Számjegyek (0,1,2 9) Speciális jelek Minden olyan karakter, ami nem betű és számjegy, ilyen lehet pl az írásjelek.(!,?,&,#...+ ) A szöveg felépítése az alkalmazott karakterek szerint csoportosítva lehetnek: Alfabetikus, csak betűket tartalmazó adat, Numerikus, csak számokat tartalmazó adat, Alfanumerikus, számokat és betűket tartalmazó adat. 3.4.2 Adatfeldolgozás Def.: Az adatokon végzett átalakításokat, műveleteket, illetve ezek ismételt alkalmazását adatfeldolgozásnak nevezzük. Számítástechnikában lépésekre lebontható az ember és a gép kapcsolata, amit gépi adatfeldolgozásnak nevezünk. A gépi adatfeldolgozás lépései: Adatelőkészítés, az adatokat a számítógép által fogadható formára hozzuk. Pl. perifériáról betölthető. Adatbevitel, az előkészített adatokat a számítógépbe betöltjük. Adatfeldolgozás, kiválasztott adatot előre meghatározott lépéssorozattal társítjuk. Adatkihozatal, a társítás eredményét értelmezhető formátummá alakítjuk. A gépi adatfeldolgozás folyamán az adatokat egyik jelrendszerből át kell alakítani a másik jelrendszerbe. Az ilyen áttéréseket kódolásnak nevezzük. 3.5 Kódolás: Egy jelkészlet felhasználását szabályrendszer rögzíti. A jelkészletet csak a hozzárendelt szabályrendszerrel együtt alkalmazhatjuk. Ha ismert egy jelkészlet és annak szabályrendszere, de új eszközön nem alkalmazható akkor egy szabály szerint új jelkészletet és szabályrendszert kell létrehozni. Def.: Azt a szabályt, ami egy jelkészletből egy másik jelkészletbe átmenetet biztosít, kulcsnak nevezzük. A kulcs biztosítja a reprodukálhatóságot (ismételhetőséget). A kulcs alkalmazását kódolásnak nevezzük. Def.: Azt a tevékenységet mely egy jelkészlet és szabályrendszer együttes használatának kulcs szerinti átalakításából eredő új jelkészletet és szabályrendszert állít elő, kódolásnak nevezzük. Számtalan példát lehet mondani a kódolásra, pl.: Órai vázlatkészítés. Beszéd kódolása írott szöveggé. A kódolás kulcsa az írás, új jelkészlet a karakterek, szabályrendszere, ha magyarul írunk, a magyar helyesírás szabályai. 8
3.6 Algoritmus Egy matematikai feladat megoldására megoldási tervet készíthetünk. A feladat, feltételezzük, úgy van megfogalmazva, hogy meghatározható a megoldás első lépése. A következőkben értékmeghatározások és átalakítási szabályok alkalmazásának sorozatával utolsó lépésként a kért eredmény megadható. Lehet látni, hogy a megoldási terv véges elemi lépés, ami az első lépéstől a feladat befejezéséig tart. Def.: Egy feladat megoldására kialakított véges számú lépéssorozatot algoritmusnak nevezünk. Visszatérve a matematikai feladatmegoldásra, kijelenthetjük, hogy minden matemetikai feladatmegoldásnak van egy algoritmusa. Tovább gondolkodva könnyen rájöhetünk arra, hogy azonos típusú feladat megoldási algoritmusa azonos. Ha az előzőek igazak, akkor miért nehéz a matematika? A válasz egyszerűnek tűnik, nem ismerjük fel a megoldás algoritmusát! A megoldás algoritmusát akkor ismerjük fel, ha már egyszer vagy többször bejártuk, tehát a feladatmegoldást gyakoroltuk. Nehezíti továbbá, az un. reáltantárgyak feladatmegoldását az elemi lépések felírásához szükséges háttértudás hiánya, de ezt meg lehet tanulni. Végkövetkeztetés, rossz kifogás az, hogy azért nem tudom a matematikát, fizikát és a kémiát, mert nem értem. Tanulni kell, mint bármely más tantárgyat, csak kicsit másképp. 4 A Neumann típusú számítógép Nevét Neuman János (1903-1957) magyar származású Egyesült Államokban élt vegyész, fizikus, matematikus és számítástechnikai professzorról kapta, az általa kidolgozott elven kialakított számítógépekre. 4.1 Jellemzői A Neumann típusú számítógépek legfontosabb jellemzői. - a gép tartalmaz egy közös tárolót, ami egyaránt tárolja a végrehajtandó program utasításait, valamint az utasítások által feldolgozandó adatokat is, mindkettő bináris kódolású. - tartalmaz egy vezérlőegységet, ami a tárolt program utasításait egyenként sorra véve oldja meg a kívánt feladatot, automatikus végrehajtás miatt egy beépített utasítás számláló tárolja a következő utasítás memória címét. - A program utasításai által megkívánt aritmetikai és logikai műveletek végzésére egy önálló egység az aritmetikai és logikai műveletvégző egység szolgál. - Az adatok bevitelére és kinyerésére önálló bemeneti/kimeneti egység szolgál. Számítógépnek nem írhatunk elő tetszőleges nyelvezetben és formátumban megoldást tartalmazó lépéseket, hanem csak kötött a gép számára alakilag és formailag megfelelő, tehát általa értelmezhető lépéseket. Az így leírt elemi lépéseket utasításnak nevezzük. A Neumann-elvből két igen fontos tulajdonságot ragadunk ki a bináris feldolgozás és a műveletek, természetesen el nem hanyagolva a többit. 9
4.1.1 Bináris feldolgozás A korai időkben, - 1944,1952 a legnagyobb felfedezés a bináris adatfeldolgozás volt. A digitális technikában ismert volt a kétállapotú jel. Elterjedését akadályozta a robosztus kivitel, pl.: relék a vezérléstechnikában, jelfogók a távközlés technikában. Neuman János első, általa kitalált elv szerint működő számítógépe elektroncsöves volt, hatalmas energiát fogyasztott, de az elvet igazolni lehetett. Az eletroncsöveknek működésének ismertetése nélkül- van egy olyan üzemmódja (C osztályú üzemmód), amiben a katód-anód közötti ellenállás kicsi, tehát a rajtuk mérhető feszültség alacsony. Létezik a lezárt vezérlésű elektroncső, ahol a katód-anód közötti feszültség nagy, a feszültség a maximum értékű. Ezek után egyértelmű volt Neumann János által vezetett csoportnak-, hogy minden adatot, mit közölni kell a géppel azt az előbb leírt két állapottal kell megoldani. A gépnek egyszerű feladatot adtak, ma is ugyan ilyen egyszerű. Tároljon egy vagy több adatot, lehessen a tárolóból adatot venni és tenni különböző egységekbe, tudjon összeadni, és ismerje a logikai műveleteket. Visszatérve az adatközlésre, egyértelmű volt, hogy a kétállapotú (bináris) jelek leírásának alapja a kettes számrendszer lesz. Kettes számrendszer jelkészlete 0 és 1, de szabályrendszerébe be kellett építeni a matematikai műveletek mellé a szövegíráshoz szükséges betűket, írásjeleket. 4.1.2 Számrendszerek Egy számrendszer tulajdonságán értjük a felépítését és az elvégezhető műveleteket. A számrendszer felépítését jellemzi a helyérték és a számjegyek. Továbbiakban a kettes, 2 számrendszer helyértékei KETTES HELYÉRTÉK ELRENDEZÉS 2 6 2 5 2 4 2 3 2 2 2 1 2 0 2-1 2-2 2-3 2-4 2-5 2-6 EGÉSZ TÖRT 6. ábra A 6.ábrán egy 2-es (bináris) számrendszer számelrendezés (alaki érték) részletét látjuk, a pozitív egész és a tört helyérték feltüntetésével. A 10-es számrendszer számegyenese a valós számok rendezett halmazát tartalmazza. A valós számokon az egész és tört értéket értjük. TIZES SZÁMRENDSZER SZÁMEGYENESE -9-8 -7-6 -5-4 -3-2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 NEGATÍV POZITÍV 7. ábra A 7.ábrán a 10-es számrendszer nulla környezetét rajzoltuk meg az egész értékek feltüntetésével. Oktatási rendszerünk a 10-es (decimális) számrendszert használja. A 10-es számrendszerben a helyértékek képzése 10 hatványai alapján, az 8. ábra szerint épül fel. 10
TIZES HELYÉRTÉK ELRENDEZÉS 10 6 10 5 10 4 10 3 10 2 10 1 10 0 10-1 10-2 10-3 10-4 10-5 10-6 EGÉSZ TÖRT 8. ábra A 10 számrendszer számjegyei 0..9-ig tart. Hasonló módon adhatjuk meg a 8-as számrendszert, amiben a helyértékképzés nyolc hatványai szerint, számjegyei pedig 0-7-ig tart. Végül a 16-os számrendszer helyértékképzése, a 16 hatványai, számjegyei 0..9 és A F-ig tart, ahol A=10, B=11, C=12, D=13, E=14, D=14, F=15. Minden számrendszerben az értékképzés úgy történik, hogy a helyérték helyére olyan számjegyet írunk, ami jellemzi az adott helyérték mennyiséget. Informatikában jellemzően négy számrendszert használunk, ezek 2 vagy bináris, 8 vagy oktális, 10 vagy decimális és a 16 vagy hexadecimális számok. Az 58 tizes számrendszeri szám 2,8,16 számrendszerbeli alakját felírjuk, alsó indexben, zárójelében jelölve a számrendszert. 111010 (2), 72 (8), 58 (10), 3A (16) 4.1.3 Számrendszerek közötti átalakítás A számrendszerek közötti átlakításnak különböző megoldásai vannak. Felrajzolva az átalakítási sémát, a módszer nem tűnik bonyolultnak. A 9. ábra a számrendszerek egymásközti átalakítási szabályrendszerét csoportosítja. 2 8 10 2 8 8 2 16 16 16 9. ábra Az ábrából megállapíthatunk egy általános átalakítási szabályt. Def: Minden számrendszerből 10-es számrendszerbe úgy alakítunk át, hogy az adott számrendszerben lévő szám számjegyeinek és a hozzátartozó helyértékének szorzatát összeadjuk. pl Átalakítás 2 10 be ; 0111010( 2) 58(10 ) 5 4 3 2 1 0 1 2 1 2 1 2 0 2 1 2 0 2 32 16 8 0 2 0 Átalakítás 8 10 be ; 72( 8) 58(10 ) 1 0 7 8 2 8 56 2 Átalakítás 16 10 be ; 3A (16) =58 (10) 1 0 3 16 A 48 10 58 Látható a 10-es számrendszerbe történő átalakítás sémája minden számrendszerben ugyan az. Általános átalakítási sémát takar a 10-es számrendszerből való átalakítás is. 11 58 (10) (10) 58 (10)
Leolvasási irány Békéscsaba Def: Tizes számrendszerből bármely számrendszerbe, egész értéket, úgy alakítunk át, hogy a 10-es számrendszerbeli számot elosztjuk a számrendszer alapjával, az osztás hányadosa a tovább osztandó szám, a maradék az új számrendszer számjegye, az osztást addig végezzük, míg a hányados nulla lesz. Átalakítás: 10 2 58 (10) : 2 = 111010 (2) 29 0 14 1 7 0 3 1 1 1 0 1 1. táblázat Átalakítás: 10 8 58 (10) : 8 = 72 (8) 7 2 0 7 2. táblázat Leolvasási irány Átalakítás: 10 16 58 (10) : 16 = 3A (16) 3 10=A Leolvasási 0 3 irány 3. táblázat A táblázat gyors értelmezéséhez néhány kiegészítő adat. Az 58-as 10-es számrendszerbeli számot alakítottuk át 2-s, 8-as és 16-os számrendszerekbe. Az 58 (10) alatti oszlop a hányados érték. A számrendszer alapja a számrendszer számjegyeinek száma pl 2-es számrendszer számjegyeinek száma 0,1 tehát kettő. Visszatérve a táblázathoz az osztást a számrendszer alapjával végezzük, alatta lévő oszlopban a maradékok, a leendő számjegyek. Még egy információ, a számjegyek leolvasási iránya az utolsó osztás maradékától indulva haladunk az első felé (a nyíl szerint). Még mielőtt továbbmennénk, a 10-es számrendszerből 2,8, 16-os számrendszerbe úgy is átalakíthatunk, hogy előszőr a 10-es számrendszerbeli számot 2-be, majd a legkisebb egész helyértéktől kezdve 3 bitenkét csoportosítva felírjuk az oktális számjegy megfelelőjét, illetve 16-os számrendszerre úgy térünk át, hogy 4-es bitcsoportokat alakítunk ki és ennek írjuk fel a 16 számrendszerbeli számjegy értékét és elhelyezzük a megfelelő helyértéken. Bizonyításként nézzük az 58 (10) szám átalakítását. 58 (10) =111010 (2) Először írjuk fel 0-tól 7-ig oktális számok 2-es megfelelőit. Foglaljuk táblázatba helyérték helyesen 12
oktális bináris 8 0 2 2 2 1 2 0 1 0 0 1 2 0 1 0 3 0 1 1 4 1 0 0 5 1 0 1 6 1 1 0 7 1 1 1 4. táblázat A táblázatból látjuk, hogy egy 8 (oktális)-s számrendszerbeli számot 3 bináris helyértékkel tudunk megadni. pl 5 (8) =101 (2). Végezzük el a csoportosítást _111_ 010_, olvassuk le az első csoportot 111 (2) =7 (8) a másodi 010 (2) =2 (8). A felírt sorrend szerint az első csoport a legnagyobb helyérték és így tovább, haladunk a kettedes vessző felé. A bináris számjegyek csoportosítását a kettedes vesszőtöl kezdjük, ha van egész értékünk, akkor haladunk balra, ha van törtértékünk, akkor ugyanezzel a módszerrel jobbra. A hexadecimális számjegyek: hexadecimális bináris 16 0 2 3 2 2 2 1 2 0 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1 8 1 0 0 0 9 1 0 0 1 A 1 0 1 0 B 1 0 1 1 C 1 1 0 0 D 1 1 0 1 E 1 1 1 0 5. táblázat A hexadecimális számjegyek négy bináris helyértékkel írhatók fel, akkor a bináris számokat a kettedes vesszőtől kiindulva négyes bitcsoportokat létrehozva felírhatjuk annak hexadecimális megfelelőjét. Felírva: 111010 (2) = 11_1010_=3A (16) A hexadecimális-bináris táblázatban megtalálható a 2,8,10,16 számrendszer bináris megfelelője. 13
Számjegyek bináris 2 3 2 2 2 1 2 0 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1 8 1 0 0 0 9 1 0 0 1 A 1 0 1 0 B 1 0 1 1 C 1 1 0 0 D 1 1 0 1 E 1 1 1 0 F 1 1 1 1 6. táblázat 2 8 10 16 A 8. ábrán leírt oktális számok átalakítása hexadecimális számokká, az ábra szerint egy mondatban leírható, mert először átalakítjuk 2-es számrendszerbe, maj 16-os számrendszerbe. Azonos eljárással alaktítjuk át a hexadecimális számokat oktálissá. Akkor legyen a 72 (8) vegyük sorba a szám számjegyeit: A 7 (8) =111 (2) ; a 2 (8) =010 (2), helyértéknek megfelelően elrendezve 111010 (2). Most már 16-os számrendszerbe kell áttennünk, ami igen egyszerű, már említett 4-es csoportok után a kapott bináris számjegynek megfelelő hexa értékkel helyérték helyesen egymás mellé felírjuk a számjegyeket. 4.1.4 Számábrázolás A számítógépben minden adat számformációban jelenik meg. Megnéztük, hogy a számítógép vezérlése és adatműveletei bináris jellegűek, ami a kettes számrendszer felhasználását eredményezi. A számítástechnika a digitálistechnikát követte, így az természetes volt, hogy a digitálistechnika által használt fogalmak és alkalmazások átkerültek a számítástechnikába. Ilyen például a 8-as és 16-os számrendszer. A 8-as számrendszer a byte mértékegységet hozta, ami a 8 bites áramköri alkalmazásokat jelentett. A 16-os számrendszer a 2 byte, vagyis a szó (word) nagyságát jelenti és a bit információk egyszerűbb felírását eredményezte. Megyarázatként a 16 bites bináris számnak 16 számjegye van, de ugyanezt a 16 bites számot hexadecimális számként 4 hexadecimális számjeggyel írhatjuk fel. A számítógépben a vezérlés és adatfeldolgozás adathalmazokkal történik, ezek a fájlok. A fájlok, vagyis az állományok logikai rekordokból épülnek fel, ezek elemi adatokból, illetve az elemi adatok karakterekből. Tudjuk, hogy a 1 karakter 1 byte, akkor adva volt, hogy a számok a karakterekhez hasonlóan byte-ok vagy ezek többszörösei legyenek. A számábrázolásban megkülönböztetünk bináris számábrázolást és binárisan kódolt decimális számok (BCD) ábrozolását. 14
4.1.4.1 Bináris számábrázolás A bináris szám ábrázolása, lehet fixpontos ábrázolás, általában 8, 16, vagy 32 biten. Minden értéket 2-es számrendszerben megadva ábrázoljuk. A bináris fixpontos ábrázolás általános felépítését a 10. ábra mutatja E Egész Tört 15 14 0 KETTEDES PONT 10. ábra A 10.ábrán egy 16 bites fixpontos ábrázolású bináris szám általános felépítését látjuk. Három részből épül fel, a legnagyobb helyérték tartalmazza az előjelet (E), ami ha pozitív, akkor 0, ha negatív, akkor 1 értékű. Ezután a szám egész értéke következik, majd a tört értéke. A két értéket szimbólikusan a kettedes pont válaszja el egymástól. A tört rész nagyságát a programozó jelöli ki, a müveletek folyamán nagysága azonos. Alkalmazása a digitális technikában volt, itt külön áramkör gondoskodott az egész és tört értékről. Számítógépeknél a bináris egészértékű ábrázolást ismerjük. A bináris egész abszolutértékes ábrázolás. Az ábrázolás fixpontos, nincs tört értéke, minden számjegy a szám abszulútértékéből képzett, az előjel pozitív szám esetén 0, negatív szám esetén egy. Ábrázoljuk az 1273 (10) és a -1273 (10) számot. Egy szám abszolút értéke a pozitív előjellel vett érték. Először írjuk át 2-es számrendszerbe, ami 10011111001 (2). Az ábrázolás 16 biten történt. +1273 0 0 0 0 0 1 0 0 1 1 1 1 1 0 0 1 15 14 0-1273 1 0 0 0 0 1 0 0 1 1 1 1 1 0 0 1 15 14 0 11. ábra A két szám ábrázolása csak előjelben tér el egymástól, az előjelre vonatkozó megkülönböztetés miatt. Az ábrázolásban a számbitek elhelyezését a legkisebb helyértéken kezdjük, ha nem használjuk fel az összes bitet, akkor a fel nem használt biteket nem értékkel rendelkező 0-at írunk. Bináris egész kettes komplemens ábrázolás. A mondat szavai ismertek, talán a komplemens kifejezés nem. A komplemens szó kiegészítést jelent. A kettes komplemens kettes számrendszerbeni kiegészítést jelent. A bináris egész ábrázolásban alakult ki, a negatív számok ábrázolására. Az ábrázolást az tette szükségessé, hogy a 4 elemi matematikai művelet visszavezethető legyen az összeadás műveletére. Most csak a négy elemi művelettel foglalkozunk, de el lehet gondolkodni a többin is. Nézzük először 10-es számrendszerben. Végezzük el a következő műveletet 342-ből vonjunk ki 127-t. akkor, 342-127 215 7. táblázat 15
342 127 215. Most végezzük el komplemens összeadással. A -127-nek az 1000-es komplementere +873, akkor 342 + 873 1215 8. táblázat A két végeredmény közötti különbség 1000, ami a komplemens műveletre utal. Bináris számok 2-es komplemens ábrázolása. Az összeadásra visszavezethető kivonás eredményeként jött létre. Def.: Egy szám kettes komplemensét úgy képezzük, hogy vesszük a szám inverzét és hozzáadunk 1-et. Mindig a példa a legjobb magyarázat. Nézzük a -5 (10) 2-es komplemensét. Tudjuk, hogy az 5 (10) 2-es abszolutértéke 101 (2). A deffiníció szerint az inverzét kell venni, vagyis ahol 1-es számjegy van ott 0-át és fordítva, akkor abs101( 2) inv010(2) adjunk hozzá 1-et. akkor 010 + 1 011 9. táblázat Ábrázoljuk 16 biten a +5 és a 5-t. Az utóbbit 2-es komplemens ábrázolásban. +5 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 15 14 0 inv+5 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 +1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + -5 2kompl 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 10. táblázat A 10. táblázat utolsó sora -5-nek kettes komplemens ábrázolása. Ha megfigyeljük a +5 és -5 ábrázolt számot, akkor a 2-es komplemensképzésre egy igen könnyen kezelhető átalakítási deffiníciót alkothatunk meg. Def.: Egy bináris szám kettes komplemensét úgy képezzük, hogy a legkisebb helyértékű 1-esig, beleértve az 1-et is, a számjegyek megegyeznek az abszolutértékes szám számjegyeivel, ettől nagyobb helyérték felé haladva vesszük az inverzét, beleértve az előjelet is. A bináris szám kettes komplemens ábrázolásban könnyen felismerhető, mert a nagyobb helyértékeken az előjelet is beleértve 1-es értékek szerepelnek. Ha meg akarjuk kapni a szám abszolut értékét, akkor ismét kell venni a 2-es komplemens értékét. Bináris lebegőpontos számábrázolás. 16
A lebegőpontos szám ábrázolásához a matematikában ismert, normálalakú számot használunk fel. Minden szám normálalakra hozható, és e tevékenységet normalizálásnak nevezzük. Normalizálást adott helyértékre alakítási lehetőség, ami jelenti, hogy azon a helyértéken létezik az értékelhető számjegy. Informatika a nullára vagy egyesre normalizált alakot alkalmazza. Egy szám normálalakján értjük azt, a valós értékű számot, amit megszorozva a számrendszer alapjának olyan értékű hatványával, hogy az eredeti számot kapjuk vissza. Pl.: 3 4 1342( 10) 1,342 10 0,1341 10 Az 1342 (10) tizes számrendszerbeli számot normalizáltuk, először egyesre, ami jelentette, hogy van az egyes helyértéken értékhordozó számjegy. Látható ahhoz, hogy az eredeti értéket megkapjuk az 1,342 számot 1000-el kell megszorozni, vagyis 10 3 nal. A 0,1341 a nullára normalizált érték, ahol az egyes helyértéken nincs értékhordozó számjegy, a tizedesvesszőt egyel tovább mozgattuk balra, mint az előbb a számot 10 4 -el kell szorozni. Vizsgáljuk meg a 2-es számrendszerbeli szám normál alakját. A normalizálás hasonlóan megy a 10-es számrendszerbeli számokhoz. Alaktísuk át 2-es számrendszerbe az norm 11 1342 10100111110 0,1010011111. Az átalakításból látható, hogy kitevő ( 10) 2 értéke a kettedes vessző balra mozgatásának helyértéki mozgása. Ez most 11 helyérték balra. A nullára normalizált szám tulajdonságai. nincs egész értéke, illetve az mindig nulla (0) csak tört értéke van a tört érték mindig értéket hordozó számjeggyel kezdődik, és az mindig 1 a tört értékből visszaállítható az eredeti szám a tört értékkel kezdődő 1 az implicit bit, tároláskor elhagyható. A normálalakú számok számábrázolását lebegőpontos számábrázolásnak nevezzük. A normálalakú számokat három mennyiséggel jellemezhetjük, előjel, tört érték, számalap hatványa. Ezt a három jellemzőt használjuk a lebegőpontos számábrázoláskor. A lebegőpontos számábrázolás általános felépítése: E Karakterisztika Mantissza 31 30 24 23 0 implicit bit 12. ábra A 12.ábrán egy 32 bites lebegőpontos számábrázolás általános felépítését látjuk. A 32 bit megosztása a következő, a legnagyobb helyértékű (31) biten az E jelű előjel, ami pozitív előjel esetén 0, negatív előjel esetén 1, A karakterisztika 24 30 biteken, a számalap hatványértéke, értéke 7 biten az ábrázolástól függ. A mantissza értéke 0 23 bit a szám tört értékének ábrázolt helyértékei, ami 24 biten valósul meg. Az eltolt nullapontú számábrázolás Egy lebegőpontos számábrázolásban a normalizált számot kell ábrázolni. A normalizált szám beazonosításához 4 tulajdonságát kell ábrázolni, ezek a szám előjele, a tört értéke, a kitevő értéke, valamint a kitevő előjele. A szám előjelét a 11.ábra szerint a legnagyobb 31 biten adjuk meg. A tört értéke a mantissza. A kitevő értékét és előjelét a 24 bittől kezdődő és a 30 bitig tartó helyek adják. A 7 biten ábrázolható tartomány legnagyobb értéke, 2 7 1, ami tizes számrendszerben 127-nek, kettes számrendszerben 1111111 értéknek felel meg. Ez lesz az ábrázolható maximum kitevő érték. Azonban pozitív kitevők mellett vannak negatív kitevők is, ezek a +1és -1 közötti számok, miket ábrázolni szintén tudni kell.ezért létrehozunk egy 17
virtuális nulla kitevőt ez 7 bites karakterisztika esetén 100 0000 (2) =64 (10), a középérték. A jobb megértéshez készítsünk egy szemléltető ábrát. + kitevő - kitevő 127 64 0 +63 0-63 13. ábra A 13.ábra két főrészből áll, az első rész tartalmazza a megosztást 0-tól 64-ig, majd ettől 127- ig. A tartományt két egyenlő részre osztottuk a pozitív illetve a negatív kitevők ábrázolása miatt. Ezért eltoltuk a nulla értéket a 64-re, ami 1000000 (2) kettes megfelelője. A karakterisztika számítása azt jelenti, hogy pozitív kitevő esetén hozzáadjuk, negatív kitevő esetén pedig levonjuk a virtuális nullapont (1000000) értékből. Ezek után ábrázoljuk a 1234,752 (10) számot 32 bites lebegőpontos számként. Megoldás: 1. A számot 2-es számrendszerbe alakítjuk át. 2. A szám egészrész átalakításnál osztunk 2-vel és a maradék lesz a számjegy, ezt addig végezzük, míg az osztandó nullaértékű lesz. A leolvasás autolsó osztástól az első felé haladva. Egész rész: Tört rész: 1234 : 2 0 752 *2 617 0 1 504 308 1 1 008 154 0 0 016 77 0 0 032 38 1 0 064 19 0 0 128 9 1 0 256 4 1 0 512 2 0 1 024 1 0 0 048 0 1 0 192 11. táblázat A törtrész 0,752 (10) szám, mit úgy alakítunk át, hogy értékét megszorozzuk a számrendszer alapjával. Ha a szorzat eredménye nagyobb mint egy, akkor értékkel rendelkező számjegyet kapunk, ez az 1, ha nincs akkor 0. A bináris szám a szorzat eredményének egész része. Szorozni csak a tört rész kell!! 3. A kapott bináris eremény: 10011010010,11000000100 (2 ) 4. Normalizáljuk nullára: 0,1001101001011000000100 2 5. Karakterisztika számítása 11 18
eltolt nullapont 64 (10) 100 0000 a kitevő 11 (10) + 1011 karakterisztika értéke 100 1011 12. táblázat 6. Ábrázoljuk 32 biten 0 100 1011 1001 1010 0101 1000 0001 0000 31 13. táblázat Különböző funkcionális ábrázolások léteznek, ilyen a mostani 13.táblázat is, ez a művelet előtti ábrázolás. A tárolt változat a már említett implicit bit nélküli ábrázolás, elsősorban a pontosság növelésben van szerepe. A 13. táblázat mantissza legkisebb helyértékén érték nélküli számjegyekkel helyettesítettük az el nem végzett szorzás miatt. Nézzünk egy olyan példát, ahol a kitevő negatív. A negatív kitevőjű normálalakú számok a tört számok. Legyen 0,00003275 (10) tizes számrendszerbeli szám értéke, akkor alakítsuk át 2-es számrendszerbe. Tudjuk, hogy tizes számrendszerbeli törtet bármely számrendszerbe a számrendszer alapjával való szorzással oldhatjuk meg. Ha a szorzásnak eredménye egész értéket ad, akkor az, számjegye az új számrendszernek, egyébként nullaértékű. 0 Egész:0 Tört rész:00003275 (10) 0 00003275 *2 folytatás 0 0000655 0 292608 0 000131 0 585216 0 000262 1 170432 0 000524 0 340864 0 001048 0 681728 0 002096 1 363456 0 004192 0 726912 0 008384 1 453824 0 016768 0 907648 0 033536 1 815296 0 067072 1 630592 0 134144 1 261184 0 268288 0 522368 0 536576 1 044736 1 073152 0 089472 0 146304 0 178944 14. táblázat A bináris szám: 0,00000000000000100010010101110100 (2) 14 Nullára normalizált alakja: 0,1000100101011101 2 6 Legkisebb mantissza értékre normalizált alakja: 0,000000001000100101011101 2 Karakterisztika számítása nullára normalizált esetre: 19
Az ábrázolt érték 32 biten eltolt nullapont 64 (10) 100 0000 a kitevő -14 (10) - 1110 karakterisztika 011 0010 15. táblázat 0 011 0010 1000 1001 0101 1101 0000 0000 31 0 16. táblázat A lebegőpontos számnak, megegyezően a fixpontoshoz, a számokat ábrázolhatjuk abszolútértékes számként, itt a mantisszaérték abszolút értéke egyező plusz (+ 5,62 (10) ) és mínusz (-5,62), előjel különbség van, a már leírtak szerint. Negatív számok 2-es komplemens ábrázolása itt is lehetséges, de a következők betartása mellett, a 2-es komplemensben ábrázolt szám előjele negatív, karakterisztika számítása a megadott számítási mód szerint kell elvégezni, 2-es komplemenssé csak a mantissza értéket alakítjuk át. Nézzünk egy feladatot. Az ábrázolt szám a -0,00003275 (10. Már átalakítottuk 2.es számrendszerbe, ismerjük a karakterisztika értékét, akkor, szedjük össze, mit ismerünk: a szám előjele negatív, tehát 1 karakterisztika értékét a legkisebb mantisszaértékre normalizált alak adja (-6) 011 1010 a mantissza abszolút értéke, 0000 0000 1000 1001 0101 1101 Ábrázoljuk abszulútértékesen, majd alakítsuk át 2-es komplemensé és így ábrázoljuk. Abszolút értékes 1 011 1010 0000 0000 1000 1001 0101 1101 31 0 Kettes komplemens 1 011 1010 1111 1111 0111 0110 1010 0011 31 0 17. táblázat Abszolútértékes ábrázolásban csak az előjel bitje változik 0-ról 1-re, ez látható a 17.táblázatban. A 2-es komplemens átalakítás a mantisszára vonatkozik, betartva az átalakítás szabályait, ami az utolsó legkisebb helyértékű 1-ig egyező, beleértve az 1-et is, attól a nagyobb helyértékek felé a számjegyek inverzét kell venni. 4.1.4.2 Decimális számok ábrázolása BCD A 14. táblázatban alakítottuk át a 0,00003275 (10)-es számrendszerbeli számot 2-es számrendszerbe. A hosszú átalakítási műveletsor ellenére tovább lehetne folytatni. Mivel nem tudtuk befejezni az átalakítást ezért az pontatlan, mert néhány 10-es törtérték nem reprodukálható pontos értékben visszaalakítás esetén. A pontatlanság kiküszöbölése érdekében vezették be binárisan kódolt decimális számokkal (BCD) végzett műveleteket. 20
Elsősorban a digitálistechnikában terjedt el, számok megjelenítésére, és egyszerű műveletek elvégzésére. A 6.táblázatban írtuk fel, a bináris számjegyek a különböző számrendszerekben hogyan helyezkednek el. Látható, hogy az egyes számrendszerek számjegyei az egységes ábrázolásnak megfelelően csak helyértékkiegészítővel térnek el egymástól. számrend szám helyérték szer jegy 2 3 2 2 2 1 2 0 2 1 - - - 1 8 1-0 0 1 10 1 0 0 0 1 16 1 0 0 0 1 2 5 - - - - 8 5-1 0 1 10 5 0 1 0 1 16 5 0 1 0 1 2 9 - - - - 8 9 - - - - 10 9 1 0 0 1 16 9 1 0 0 1 2 D - - - - 8 D - - - - 10 D - - - - 16 D 1 0 1 1 18. táblázat Felírtuk az 1,5,9 és D (13), számjegyeket a 2, 8, 10, 16 számrendszerekben. Minden számrendszerben felírható a 0, látható, hogy helyérték nélküli számjegy akkor használjuk, ha jelezzük azon a helyértéken értékelhető számjegy nincs. A táblázatban az 1 számjegy is minden számrendszerben ábrázolható, ha a 2 0 hatványon 1 érték van. Itt látható, hogy a különböző számrendszerekben ábrázolt 1-s csak annyiban tér el egymástól, amennyi helyértékkel ábrázolható a legnagyobb számjegye. A táblázatban azok a helyértékek vannak kihúzva, ami abban a számrendszerben nem kell a bináris képzéshez. A 10-es számrendszerből BCD átalakítás egyszerű, mert a 10-es számrendszer számjegyeit egymás mellé 4 vagy 8 bites alakban felírjuk. Ábrázolása abban térhet el, hogy egy 10-es számjegynek hány bitet tartunk föl az ábrázoláshoz. Az ábrázolásnak két formája alakult ki a pakolt és a zónázott. A BCD kódolású számnak két tulajdonsága van a számjegyek és az előjel. Minden számot egészértékként ábrázol, programozás esetén pl. assembly a fordítóval közölni, hogy a szám egészértékű vagy valós. Ez azt jelenti, hogy 7654 (10) szám BCD alakja egyező a 76,54 (10) vagy 7,654 (10) stb alakjaival. 4.1.4.3 Pakolt BCD alak Egésszámú bájtokon, a bájtokat két tetrádra (4 bit) osztva minden tetrádon egy 10-es számrendszerbeli számjegyet ábrázolunk, az utolsó legkisebb helyértéket tartalmazó tetrád az előjel, amit szabványos előjelkódok adnak, pozitív szám esetén C (16) bináris megfelelője (1100 (2) ), negatív szám esetén D (16) 2-es számrendszerben (1101 (2) ). Nézzünk egy feladatot. Végezzük el 32 biten + 6832 (10) és a -6832 (10) decimális szám pakolt BCD ábrázolását. 21
+6832 31 Hexadecimális érték 0000 0000 0000 0110 1000 0011 0010 1100 0 0 0 6 8 3 2 C 0-6832 31 Hexadecimális érték 0000 0000 0000 0110 1000 0011 0010 1101 0 0 0 6 8 3 2 D 0 19. táblázat A 32 biten a ki nem töltött bittek helyére nullát írunk. Az ábrázolási formát az aritmetikai műveletek esetén alkalmazzuk, pl összeadás. 4.1.4.4 Zónás BCD alak A zónás ábrázolásnál egy számjegy egy bájt. Ábrázolása hasonlóan történik, mint a pakolt alak esetén, mert félbájton ábrázolt számokról van szó, csak a bájt másik részét úgynevezett zónabitekkel (F (16) ), bináris megfelelője 1111 (2) egészítjük ki, ahol csak egy kivétel van, a legkisebb bájt, ahol a zónabitek helyén az előjelet ábrázoljuk. Alkalmazását az tette szükségessé, hogy illeszkedjen a numerikus karakterlánc ábrázoláshoz. Egy karakter 1 byte, így egy BCD kód zónás alakja szövegkörnyezetben azonos memória helyt foglal el mint egy karakter. A zóna bitekkel jelzik, hogy BCD számról van szó. Ábrázoljuk az előző értéke +6832 Hexadecimális érték 1111 0110 1111 1000 1111 0011 1100 0010 31 0 F6 F8 F3 C2-6832 1111 0110 1111 1000 1111 0011 1101 0010 Hexadecimális érték 31 F6 F8 F3 D2 0 20. táblázat A két ábrázolás közötti átalakítást a programozónak kell megoldani.a megoldás, hogy először a számjegyeket vesszük ki, majd helyezzük el, majd az előjelet. Pl. A pakoltból kiemeljük a második tetrádtól kezdődő félbájtos értékeket és ezt a bájtok alsó tetrádjaira helyezzük el, majd folytatjuk a legkisebb helyértékű tetrád előjel értékével, mit, a legkisebb bájt felső részére tesszük, végül a maradék felsőbájtokat F (16) -re állítjuk, és megkaptuk a zónás alakot. A zónásból pakoltra áttérés algoritmusát is meg lehet fogalmazni, itt első lépésként az előjelet vesszük ki az első bájt felső részéből, majd minden alsó bájtból kivesszük a bináris alakot és terádonként egymás mellé helyezzük. Ha van ki nem töltött helyértékünk, azt kinullázzuk. Láttuk, hogy minden számrendszerből áttérhetünk bináris számrendszerbe és vissza. A különböző számrendszerek kialakulása és alkalmazása a számítástechnika fejlődésének egyegy korszaka. Léteznek az ún oktális gépek, a hexadecimális gépek a BCD gépek, és a többszörös hexadecimális gépek. Ennek megfelelően a műveletek elvégzése, a pontos eredményheu jutás speciális megoldások alkalmazását tette szükségessé az egyes korszakokban. 22
4.1.5 Műveletek számrendszerekben A négy alapműveletet vizsgáljuk, amit az általános iskola alsótagozatában a 10-es számrendszerben mindenki tanult. Az ott megismert törvények nem változnak az a többi számrendszerre is vonatkoznak. A négy alapművelet az összeadás, kivonás, szorzás és az osztás. Minden számrendszer létrehozza saját számjegyeinek csoportját és helyértékét. A számcsoportokat számjegyek alkotják, a számrendszereket a csoportokat alkotó számjegyek darabszámáról nevezték el. 4.1.5.1 Összeadás Def: Két vagy több számot úgy adunk össze, hogy a legkisebb azonos helyértéken kezdve összeadjuk a számjegyeket a létrejött átvitellel együtt, majd ezt elvégezzük minden helyértéken. Nézzük egy egyszerű szemléltethető példát a 10-es számrendszerre. Adjuk össze 7-t és a 8-at. 10-es számrendszer számegyenese 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 7 8 15 14. ábra A műveletet úgy végeztük el, hogy a 0 kezdetű számegyenesre kiszámoltunk 7-et, majd még hozzászámoltunk 8-t. Eredményül 15-t kaptunk. Az összeadásban szereplő számokat összeadandóknak az eredményt összegnek nevezzük. A gyakorlatban az összeadás a 21.táblázat szerinti elrendezésben jelenik meg, ahol oszlopelrendezést alkalmazunk, itt az azonos helyértékeket egymás alá írjuk. 1 átvitel 7 összeadandó műveleti jel + 8 összeadandó 1 5 összeg 21. táblázat Rajzoljuk fel a 2-es számrendszer számegyenesét és végezzük el ezt az összeadást. 2-es számrendszer számegyenese 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 10001 111 1000 1111 15. ábra Az összeadási szabály és jelölés azonos a 10-esben és a 2-esben. 000 átvitel 111 összeadandó műveleti jel + 1000 összeadandó 1111 összeg 22. táblázat 23
A 2-es számrendszerben két számjegy összeadása szerepel, melynek összegét a 15.ábrából leképezhetjük, ahol 0 0 0, 0 1 1, 1 1 10. Az első két művelet nem tartalmaz átvitelt, a harmadik eredménye már átvitelt is tartalmaz. Összefoglalva a 0, és 1 műveleteit érdekes megállapítást nyerhetünk. 0 0 0 1 átvitel 0 0 1 1 összeadandó + 0 + 1 + 0 + 1 összeadandó 0 0 0 1 0 1 1 0 összeg 23. táblázat Az összeadás eredményét két helyértékre írtuk fel, a kisebb helyértéket vizsgáljuk látható, hogy az átvitel nélküli eredmény azonos számjegyek esetén 0, különböző számjegyek esetén 1. Készítsük el a 8-as és 16-os számegyenes egy-egy részletét. 8-as számrendszer számegyenese 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 7 10 16. ábra Nézzük a 16-os számrendszerben hogyan alakul az ismert összeadás. 17 16-os számrendszer számegyenese 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 7 8 F 17. ábra A teljesség kedvéért megadjuk a 8-as és 16-os számrendszer hagyományos összeadási felírását. 8-as 16-os számrendszer 0 0 átvitel 7 7 összeadandó + 1 0 + 8 összeadandó 1 7 F összeg 24. táblázat 4.1.5.2 Kivonás Def: Két vagy több szám kivonásán értjük, ha egy számot (kisebbítendő) csökkenteni akarunk egy vagy több számmal (kivonandó), eredménye a különbség. 24
10-es számrendszer számegyenese 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 14 8-6 18. ábra A 18.ábra számegyenesén vett 14 egységet 6 egységgel úgy csökkentettem, hogy a 14 egységből visszaszámoltam 6-t, amelynek eredményeként 8-at kaptam. Összehasonlítva a 14 és 18. ábrát látjuk, hogy a kivonás az összeadás fordított művelete. Írjuk fel oszlop elrendezésben, vigyázva, hogy az azonos helyértékek egymás alatt legyenek. 10 kölcsönvétel 14 kisebbítendő műveleti jel - 6 kivonandó 8 különbség 25. táblázat Egy kivonási művelet felépítése hasonlóan az összeadáshoz két nagy részből áll, úgymint műveleti jel és értékek. A kivonás értékei a kölcsönvételi érték, kisebbítendő érték, kivonandó érték és a különbségi érték. Látható, hogy az egyes helyértéken lévő 4-ből a 6-t nem lehetett kivonni ezért az előtte lévő 10-es helyértékből kölcsön vettünk 1-t vagyis 10-t. Ehhez a 10-hez hozzáadjuk a 4-t, már elvégezhető a kivonás. Ezt a módszert a kölcsönvétel módszerének nevezzük. A kölcsönvétel módszere: Def.: Két számot a kölcsönvétel módszerével úgy vonunk ki egymásból, hogy - a legkisebb helyértéken kezdve az azonos helyértéken lévő kisebbítendő számjegyéből levonjuk a kivonandó számjegyét. A módszer lényege, hogy az azonos helyértéken lévő szemjegyek különbségét vesszük úgy, hogy a kisebbítendő számjegyéből levonjuk a kivonandó számjegyét. Ha a kisebbítendő számjegye kisebb, mint a kivonandó számjegye, akkor a nagyobb helyértékből kölcsön veszünk 1-t. A kölcsön vett 1-hez hozzáadjuk a vizsgált helyértéken lévő kisebbítendő számjegy értékét és ebből vonjuk le a kivonandót A művelet elvégzése azonos a 2-es számrendszerben. 2-es számrendszer számegyenese 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 10001 1101 0110 0111 19. ábra Egyenletünket a 19.ábra alapján írjuk fel, ami 1101 (2) -111 (2) =110 (2) ami megegyezik 13 (10) - 7 (10) =6 (10) a tizes számrendszerbeli feladattal. Oszlop elrendezésben 25
0010 0110 kölcsönvétel 1101 kisebbítendő műveleti jel - 0111 kivonandó 0110 különbség 26. táblázat A 26. táblázatban felírt értékek kivonásánál szükséges a kölcsönvétel. Vizsgáljuk meg helyértékenként. - 2 0 helyértéken 1-1-et vonunk ki, a különbség 0 nincs kölcsönvétel - 2 1 helyértéken 0-1-et kivonást úgy tudjuk elvégezni, ha a kisebbítendő 1101 (2), 2 2 helyértékű (kiemelt) egyesét kölcsönvesszük. A 27. táblázat magyarázza a kölcsönvételi lehetőségeket, így a kapot két 1-esből levonva 1-t 1 marad. - 2 2 helyértéken 1-1 kivonást kell elvégezni, de itt a kisebbítendő 1-t kölcsönvettük, így a 0-1 a kivonási művelet. Hasonlóan az előzőekhez, csak most a 2 3 helyértékről veszünk kölcsön. Az innen kapott 1-es az alacsonyabb (2 2 ) helyértéken két egyest jelent. A két 1-esből levonva 1-t, 1-t kapunk. - 2 3 helyérték 1-esét kölcsön adtuk, így 0-0 kivonást kell elvégezni, ami eredménye 0. A 2-es számrendszerben az azonos helyértéken lévő számjegyek kivonás a következő eseteket tartalmazzák. 1 1 0 1 0 1 kölcsönvétel 0 0 1 1 kisebbítendő - 0-1 - 0-1 kivonandó 0 0 0 1 0 1 0 0 különbség 27. táblázat Kölcsönvétel ott van, ahol a kisebbítendő értéke kiseb a kivonandó értékénél. Kettes komplemens képzés módszere: A 4.1.4.1 bináris számábrázolásban meghatároztuk a komplemens fogalmát. A komplemens kiegészítést jelent. A számítástechnikában alkalmazzuk azt a matematikai megoldást, ahol a kivonást el tudjuk végezni összeadásként, ha a kivonandót (negatív számot) átalakítjuk helyértékes komplemenssé. Ha a kivonást visszavezethetjük összeadásra, akkor a négy alapművelet megoldható összeadással. Nézzük először a 10-es számrendszer komplemensképzését. A következő feladaton keresztül vizsgáljuk a kivonási műveletet. 9 (10) kisebbítendő - 7 (10) kivonandó 2 (10) különbség 28. táblázat 26