ÁTVÁLTÁSOK SZÁMRENDSZEREK KÖZÖTT, SZÁMÁBRÁZOLÁS, BOOLE-ALGEBRA 1. Tízes (decimális) számrendszerből: a. Kettes (bináris) számrendszerbe: Vegyük a 263410-es számot, és váltsuk át bináris (kettes) számrendszerbe! A legegyszerűbb módszer: írjuk fel a számot, és húzzunk egy vonalat a jobb oldala mellé. Osszuk el a számot 2-vel (a számrendszer alapjával), az eredményt (a hányadost) írjuk a felírt szám alá, a maradékot pedig (0 vagy 1) írjuk a vonal másik oldalára. Ezt mindaddig ismételjük, amíg az osztás folyamán a keletkező hányados 0 nem lesz. Ekkor a vonal jobb oldalán lévő számokat alulról felfelé írjuk egymás mellé, és már meg is kaptuk a decimális szám bináris alakját: 2634 1317 658 329 164 82 41 20 10 5 2 1 0
0 1 0 1 0 0 1 0 0 1 0 1
Tehát a 263410 bináris alakja: 1010010010102.
b. Nyolcas (oktális) számrendszerbe: A legegyszerűbb átváltani tízes számrendszerből nyolcasba az, ha előbb tízesesből átváltunk kettes számrendszerbe, majd kettesből váltunk nyolcasba. 1. lépés: Tízesből kettesbe (lásd: 1.a pont) 2. lépés: A kettesből nyolcas számrendszerbe történő átváltáskor a számjegyeket a legalacsonyabb helyiértéktől hármasával csoportosítjuk (ha kevesebb számjegy van, kibővíthetjük 0-val a legmagasabb helyiértékeken), és átírjuk a nyolcas számrendszer számjegyeire. Azért hármasával csoportosítunk, mert a nyolc a kettőnek a 3. hatványa. Ahol nullák szerepelnek a kettes számrendszerbeli számban, azokat nem vesszük figyelembe (általában áthúzzuk). Példa: 10101011102 0 0 1 0 1 0 1 0 1 1 1 0 2 1 0 2 1 0 2 1 0 2 2 2 2 2 2 2 2 2 22 21 20 1 2 5 6 Az 10101011102 nyolcas számrendszerbeli értéke: 12568 c. Tizenhatos (hexadecimális) számrendszerbe: A legegyszerűbb átváltani tízes számrendszerből nyolcasba az, ha előbb tízesből átváltunk kettes számrendszerbe, majd kettesből váltunk tizenhatosba. 1. lépés: Tízesből kettesbe (lásd: 1.a pont) 2. lépés: A kettesből tizenhatos számrendszerbe történő átváltáskor a számjegyeket a legalacsonyabb helyiértéktől négyesével csoportosítjuk (ha kevesebb számjegy van, kibővíthetjük 0val a legmagasabb helyiértékeken), és átírjuk a tizenhatos számrendszer számjegyeire. Azért négyesével csoportosítunk, mert a tizenhat a kettőnek a 4. hatványa. Ahol nullák szerepelnek a 2-es számrendszerbeli számban, azokat nem vesszük figyelembe (általában áthúzzuk). Példa: Nézzük az 10101011102 számot! 0 0 1 0 23 22 21 20 2 2
1 0 1 0 23 22 21 20 8 + 2 A
1 1 1 0 23 22 21 20 8+4 +2 E
Tehát a 10101011102 hexadecimális számrendszerbeli alakja: 2AE16.
ÁTVÁLTÁSOK SZÁMRENDSZEREK KÖZÖTT, SZÁMÁBRÁZOLÁS, BOOLE-ALGEBRA 2. Kettes (bináris) számrendszerből a. Tízes (decimális) számrendszerbe: Kettes számrendszerből tízesbe úgy váltunk, hogy a kettes számrendszerbeli szám legkisebb helyiértékétől kezdve felírjuk a kettő hatványait 20-tól, egészen addig, amíg a szám tart. A nullákat lehúzzuk, majd a maradék értékeket kiszámolva összeadjuk őket: Pl: 100110102 1 0 0 1 1 0 1 0 27 26 25 24 23 22 21 20 128+ 16+ 8 + 2 2 Tehát a 100110102 szám tizes számrendszerbeli alakja: 128+16+8+2=15410 b. Nyolcas (oktális) számrendszerbe: Lásd: 1.b pont 2. lépése c. Tizenhatos (hexadecimális) számrendszerbe: Lásd: 1.c pont 2. lépése 3. Nyolcas (oktális) számrendszerből: a. Kettes (bináris) számrendszerbe: Példa: 17548 A 8-as számrendszerbeli számot úgy lehet kettesbe átváltani, hogy felírjuk a nyolcas számrendszerbeli szám számjegyeit három helyiértékből álló kettes számrendszerbeli alakjukban, majd ábrázolási sorrendjükben egymás után írjuk. A három számjegyből ki kell választani, melyik(ek) összegeként írható fel az adott szám. A legfelső helyiértékről a kezdő nullák elhagyhatóak. 1 7 5 4 1 0 2 1 0 2 1 0 2 1 0 2 2 2 2 2 2 2 2 2 2 2 2 4 2 1 4+2+1 4 2 1 4 2 1 0 0 1 1 1 1 1 0 1 1 0 0 Tehát az 17548 kettes számrendszerbeli alakja: 11111011002 b. Tízes (decimális) számrendszerbe: 2
Nyolcas számrendszerből tízes számrendszerbe a legegyszerűbb, ha kettes számrendszeren keresztül számolunk. Tehát a nyolcas számrendszerbeli számot átváltjuk kettesbe, majd abból tízesbe váltunk. 1. lépés: nyolcasból kettesbe: lásd: 3.a pont 2. lépés: kettesből tízesbe: lásd: 2.a pont c. Tizenhatos (hexadecimális) számrendszerbe: Nyolcas számrendszerből tizenhatos számrendszerbe a legegyszerűbb, ha kettes számrendszeren keresztül számolunk. Tehát a nyolcas számrendszerbeli számot átváltjuk kettesbe, majd abból tizenhatosba váltunk. 1. lépés: nyolcasból kettesbe: lásd: 3.a pont 2. lépés: kettesből tizenhatosba: lásd: 1.c pont 2. lépése
4. Tizenhatos (hexadecimális) számrendszerből a. Kettes (bináris) számrendszerbe Példa: F3A16 A tizenhatos számrendszerbeli számot úgy lehet kettesbe átváltani, hogy felírjuk a tizenhatos számrendszerbeli szám számjegyeit négy helyiértékből álló kettes számrendszerbeli alakjukban, majd ábrázolási sorrendjükben egymás után írjuk. A négy számjegyből ki kell választani,
ÁTVÁLTÁSOK SZÁMRENDSZEREK KÖZÖTT, SZÁMÁBRÁZOLÁS, BOOLE-ALGEBRA melyik/melyek összegeként írható fel az adott szám. A legfelső helyiértékről a kezdő nullák elhagyhatóak. F (=15) 3 A (=10) 3 2 1 0 3 2 1 0 2 2 2 2 2 2 2 2 23 22 21 20 8 4 2 1 8 4 2 1 8 4 2 1 1 1 1 1 0 0 1 1 1 0 1 0 Tehát az F3A16 kettes számrendszerbeli alakja: 111001110102 b. Tízes (decimális) számrendszerbe Tizenhatos számrendszerből tízes számrendszerbe a legegyszerűbb, ha kettes számrendszeren keresztül számolunk. Tehát a tizenhatos számrendszerbeli számot átváltjuk kettesbe, majd abból tízesbe váltunk. 1. lépés: tizenhatosból kettesbe: lásd: 4.a pont 2. lépés: kettesből tízesbe: lásd: 2.a pont c. Nyolcas (oktális) számrendszerbe Tizenhatos számrendszerből nyolcas számrendszerbe a legegyszerűbb, ha kettes számrendszeren keresztül számolunk. Tehát a tizenhatos számrendszerbeli számot átváltjuk kettesbe, majd abból nyolcasba váltunk. 1. lépés: tizenhatosból kettesbe: lásd: 4.a pont 2. lépés: kettesből nyolcasba: lásd: 1.b pont 2. lépése
Összeadás és kivonás kettes számrendszerben Az összeadás gyakorlatilag ugyanúgy működik, mint a tízes számrendszer esetében, csak kevesebb számjeggyel. Az összeadás szabályai a következők:
+
0 0 0
+
1 0 1
0 1 1
+
1 1 10
+
+
1 1 1 11
Két egyes esetén az összeg 0, és a következő helyiértékre továbbviszünk egy egyest. Így előfordulhat, hogy 3 egyes kerül összeadásra, aminek az eredménye 1, és ismét továbbviszünk egy 1-est. Példa: 1 + 1 1 0
0 0 1
1 0 0
1 1 0
0 0 1
1 0 0
1 1 0
0 1 1
A félkövérrel jelölt oszlopokban az összeadást elvégezve tovább kell vinni egy egyest a következő helyiértékre. A szám elején továbbvitel miatt még egy egyest le kell írni az eredmény elejére, de mivel 8 biten dolgozunk, ez túlcsordulásnak számít, így át kell húzni. Kivonás: A kivonást kettes számrendszerben összeadásra vezetjük vissza. Ez úgy tesszük meg, hogy a kivonandó számot negatívvá alakítjuk. A negatívvá alakítást kettes komplemens képzésével végezzük. Ez annyit tesz, hogy az adott szám számjegyeit az ellenkezőjére váltjuk (ahol egyes volt, oda 0-át, ahol nulla volt, oda 1-est írunk), majd a kettes számrendszerbeli összeadásra vonatkozó szabállyal hozzáadunk egyet. Ha ezzel megkaptuk a negatív számot, akkor ezt már csak hozzá kell adni az eredetihez.
ÁTVÁLTÁSOK SZÁMRENDSZEREK KÖZÖTT, SZÁMÁBRÁZOLÁS, BOOLE-ALGEBRA Példa: -
1 0
0 1
0 0
1 0
1 1
0 0
1 0
1 0
A kivonás elvégzéséhez a kivonandó (második) számot negatívvá alakítjuk át kettes komplemens képzésével: Kiindulási szám: 0 1 0 0 1 0 0 0 Számjegyek megfordítva: 1 0 1 1 0 1 1 1 Hozzáadva egyet: + 1 Kettes komplemens: 1 0 1 1 1 0 0 0 Így már csak ezt a végeredmény kell hozzáadni az eredeti számhoz (10011011): 1 + 1 1 0
0 0 1
0 1 0
1 1 1
1 1 0
0 0 0
1 0 1
1 0 1
És ezzel meg is kaptuk a végeredményt.
Lebegőpontos számábrázolás kettes számrendszerben A lebegőpontos számábrázolás valós, azaz tört számok ábrázolására készült. Kettes számrendszerben azonban az egészrész és a törtrész között nem tizedesvessző, hanem úgynevezett kettedespont áll, ami gyakorlatilag egy kettőspont. Az átváltás menete a következő: 1. A kettes számrendszerbeli számot felírjuk normál alakban. Nézzünk példát mindkét esetre a következő két számmal: 1. szám: 10110:1011012, 2.szám: 0:000101101 A bináris pontot addig toljuk, míg az első értékes (1) helyiértékjegy elé nem ér. A normál alak kettes számrendszerben mindig 0:-tal kezdődik, majd utána jön megszakítás nélkül az adott szám az első értékes (1-es) helyiértéktől. Utána, mivel kettes számrendszerben vagyunk, meg kell szorozni a leírt számot 2-nek annyiadik hatványával, amennyivel arrébb kellett vinni a kettedespontot az első 1-esig. Ez az első esetben 5, a másodikban 3. Mivel azonban kettes számrendszerben vagyunk, át kell írni ezeket a számokat is kettes számrendszerbelibe (5 = 101, 3 = 11). Emellett a kitevő lehet pozitív vagy negatív. Ez attól függ, merre vittük a kettedespontot, hogy az első egyes elé érjünk. Ha balra, akkor pozitív, ha jobbra, akkor negatív. 10110:1011012=0:10110101101*2+101 vagy 0:000101101=0,101101*2-11 2. A számrendszer alapszáma rögzített, így azt nem szükséges tárolni, valamint mivel mindegyik szám 0:-tal kezdődik, így azt sem. Ezeket lehúzva kapjuk a lebegőpontos alakot úgy, hogy leírjuk a 0: utáni számot, majd pozitív kievőnél 1-et, negatívnál 0-át írunk utána, és végül leírjuk a kitevőben szereplő számot: 101101011011101, illetve 101101011
ÁTVÁLTÁSOK SZÁMRENDSZEREK KÖZÖTT, SZÁMÁBRÁZOLÁS, BOOLE-ALGEBRA
Boole-algebrai feladatok megoldása Szükséges előismeret: a logikai műveletek igazságtáblái (igaz = 1, hamis = 0) (Összefoglalva: negáció (not): ítélet értékét ellenkezőjére váltja konjunkció (and): csak akkor igaz, ha mindkét ítélet igaz diszjunkció (or): csak akkor hamis, ha mindkét állítás hamis kizáró vagy (xor): akkor igaz, ha pontosan az egyik állítás igaz impliláció (imp): akkor hamis, amikor az első állítás igaz, a második hamis) A műveletek megoldásánál a művelei sorrend sem mindegy. A legmagasabb szintű művelet a not, majd a zárójeles kifejezések, végül pedig a többi művelet ugyanazon a szinten áll. Feladat: Mi a végeredménye a következő logikai műveletsorozatnak: (not A or B) imp (A and not B) xor (not A imp not B) Kiinduló táblázat: A B Ez a kiindulási táblázat mindig ugyanaz, a feladat megkezdésekor meg van adva. 0 0 Mivel A és B ítéletek csak igaz vagy hamis értékeket vehetnek fel, így összesen 4 0 1 variációt lehet kirakni ebből a kettőből. Sorrendben: A hamis B hamis, A hamis B 1 0 igaz, A igaz B hamis és A igaz B igaz. 1 1 Első lépésként először az első zárójelet vizsgáljuk meg, mert a zárójeles kifejezéseket kell először megjeleníteni. A zárójelben szerepel egy negáció, azaz not művelet, és mivel ez a legmagasabb rendű, ezt kell először elvégezni: A B not A Ebben az esetben az A értékeit az ellenkezőjükre kell váltani minden sorban. Ahol eredetileg 0 az érték, ott 1-re, ahol 1, ott pedig 0-ra váltunk. (Érdemes 0 0 1 figyelni arra, hogy mindig a megfelelő ítéletet nézzük (itt most az A szolgál 0 1 1 kiindulásként). Ettől kezdve a dőlt oszlopok jelölik azt, amit a művelet 1 0 0 megoldásához nézni kell, a félkövér számok pedig az eredmények. 1 1 0 Ezek után el kell végezni a zárójeles kifejezést: A B not A not A or B Itt a két oszlop, amit a művelethez nézni kell, az a not A-s és a 0 0 1 1 B-s. A művelet az or, azaz a vagy, amely esetben csak akkor hamis a művelet értéke, ahol mindkét ítélet hamis, a többi 0 1 1 1 esetben igaz. 1 0 0 0 1 1 0 1 A következő lépés a második zárójel megoldása, amelyben szintén szerepel egy not művelet, amit ismét előre kell venni. Ezután az A és a not B oszlopokat nézve meg kell oldani az and műveletet (csak akkor igaz, ha mindkét ítélet igaz). A B not A not A or B not B 0 0 1 1 1 0 1 1 1 0 1 0 0 0 1 1 1 0 1 0 A 0 0 1 1
B 0 1 0 1
not A 1 1 0 0
not A or B 1 1 0 1
not B 1 0 1 0
A and not B 0 0 1 0
ÁTVÁLTÁSOK SZÁMRENDSZEREK KÖZÖTT, SZÁMÁBRÁZOLÁS, BOOLE-ALGEBRA Miután ez elkészült, a két zárójeles kifejezés között kell elvégezni az imp műveletet. Ez az egyetlen olyan művelet, ahol nem mindegy, melyik oszlop értékeit nézzük először, és melyiket másodszor, mivel az eredmény akkor lesz hamis, ha az ELSŐ ítélet igaz és a MÁSODIK hamis. A B not A not A or B not B A and not B (not A or B) imp (elsőként) (másodikként) (A and not B) 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 0 0 0 1 1 1 1 1 0 1 0 0 0 A következő lépés a harmadik zárójel kiszámítása, amihez szükség van a not A és not B értékekre, amiket már előzőleg kiszámoltunk, így nem kell újra megoldani, egyből rátérhetünk az imp műveletre, ügyelve a sorrendre. A B not A not A or B not B A and (not A or B) imp not A imp not (elsőként) (másodikként) not B (A and not B) B 0 0 1 1 1 0 0 1 0 1 1 1 0 0 0 0 1 0 0 0 1 1 1 1 1 1 0 1 0 0 0 1 Az utolsó lépés, hogy az (első két zárójelből előállított) hosszú kifejezésünk ((not A or B) imp (A and not B)) és a harmadik zárójeles kifejezés között elvégezzük a xor műveletet (ami akkor igaz, ha pontosan az egyik ítélet igaz). Mivel a hosszú kifejezés nem fér ki, ezért kif1-fel rövidíthető. A
B
not A
not A or B
not B
0 0 1 1
0 1 0 1
1 1 0 0
1 1 0 1
1 0 1 0
A and not B 0 0 1 0
Az utolsó oszlopban megkaptuk az eredményt.
kif1
not A imp not B
0 0 1 0
1 0 1 1
kif1 xor (not A imp not B) 1 0 0 1