Számrendszerek
Mik azok a számrendszerek?#
A számrendszereket más néven számábrázolási rendszernek is hívják. Egy adott számot, pontosabban értéket többféleképpen is ábrázolhatunk.
A 10-es számrendszert használjuk napi szinten, ez arra vezethető vissza, hogy 10 ujjunk van. De gondoljunk csak bele a Tally jelölésbe vagy a római számokba. Ugyanazt az értéket különböző írásjelekkel is ki tudjuk fejezni.
Ebben a fejezetben áttekintjük a 10-es, 2-es és 16-os számrendszerek közötti egész számok átváltását és 2-es számrendszerben a négy alapműveletet.
Számábrázolások#
Nézzük meg egy példát a Tally és római számábrázolásokra!
Tally jelölés
Római szám | Érték |
---|---|
I | 1 |
V | 5 |
X | 10 |
L | 50 |
C | 100 |
D | 500 |
M | 1000 |
Római számok
Például a 34-es értéket a 10-es számrendszerben 34-gyel írjuk le, Tally jelöléssel IIII IIII IIII IIII IIII IIII IIII, római számokkal XXXIV-nek felel meg.
A számrendszerek felépítése#
A 10-es számrendszer bizonyára mindenkinek ismert, így ebből fogunk kiindulni.
Kérdés
De hogyan is néz ez ki?
Annyira rutinosan használjuk, hogy bele sem gondolunk ennek a matematikai mikéntjébe.
Egy számrendszerben van jelkészlet és helyiérték.
Jelkészlet és helyiérték#
Egy példán keresztül nézzük meg elsőnek a fentieket. Vegyük a 37211-es számot. Elemezzük!
A jelkészlete ennek a számnak: 3, 7, 2, 1
. Ezek a számjegyek fordulnak elő benne, az ismétlődés nem számít.
A helyiértékét pedig az alábbi táblázat mutatja:
Tízezresek | Ezresek | Százasok | Tízesek | Egyesek |
---|---|---|---|---|
3 | 7 | 2 | 1 | 1 |
Tehát ez azt jelenti, hogy az egyes helyiértéken, azaz az egyesekből van 1 darab.
A tízesekből szintén 1 darab.
A százasokból 2 darab van, és így tovább.
Ezeket a helyiértékeket fel lehet írni hatványalakokban.
Írjuk fel a fenti táblázat helyiértékeit hatványalakokban:
104 = 10000 | 103 = 1000 | 102 = 100 | 101 = 10 | 100 = 1 |
---|---|---|---|---|
3 | 7 | 2 | 1 | 1 |
Hogyan kapjuk ebből vissza az eredeti számot? A helyiértékeket megszorozzuk a hozzájuk tartozó értékekkel, majd ezeket összeadjuk.
Nézzük a fenti példán:
1 * 1 + 10 * 1 + 100 * 2 + 1000 * 7 + 10000 * 3 = 37211
Ebből a táblázatból a szemfülesebbek már észrevehették, hogy a 10-es számrendszer helyiértékeit a 10-es alapú hatványok adják.
Ezt általánosítva:
Állítás
Egy számrendszer helyiértékeit a számrendszer alapszámának hatványai fogják adni.
Számrendszer jelölése számoknál#
Ha kérdéses, hogy egy szám milyen számrendszerben van felírva, akkor jobb alsó indexbe szokták jelölni a számrendszert. Ha nincs megadva, akkor 10-es számrendszerben értelmezzük.
Például 101-et értelmezhetjük 10-es számrendszerben, ekkor 101-et ér, viszont akár 2-esben is, ekkor pedig 5-öt ér.
Tehát jelölni kell, hogy mi a 101-et a 10-es számrendszerben írtuk fel: 10110
A 10-es számrendszer (decimális)#
Mindenki találkozik vele a hétköznapok során, kezdésnek vizsgáljuk meg ezen számrendszer jellemzőit!
Jelkészlet#
A 10-es számrendszer jelkészlete a következő jelekből (számjegyekből) áll: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
(10 darab).
Helyiérték#
A helyiértékeit a 10 hatványai adják.
Az egyesek helyiértékét a 100, a tízesekét a 101, a százasokét a 102, és így tovább.
Megjegyzés
A hatványkitevője lehet negatív is. Ez tört számot eredményez. Például 10-1 = 0.1
A 2-es számrendszer (bináris)#
Kérdés
Miért a 2-es számrendszer?
A számítógépek tárolóegységei kétállapotú fizikai elemek. Az egyik állapot a "van" állapot/folyik áram, ez az 1-es állapot, a másik a "nincs" állapot/nincs jelen áram, ez a 0-ás állapot. A digitális áramkörök esetében a 2-es számrendszert a legegyszerűbb megvalósítani.
Ha a fentieket megértettük, akkor nem lesz sokkal bonyolultabb a binárisban való számolás, csak szokatlan a tudatos használata ezen ismereteknek.
Jelkészlet#
A 2-es számrendszer jelkészlete: 0, 1
(2 darab).
Állítás
Minden számrendszerben annyi jel van, ahány a számrendszer alapja.
A 10-es számrendszerben 10 darab volt összesen, itt pedig 2 darab a jelkészlet darabszáma.
Például a 8-as (oktális) számrendszerben 8 darabos a jelkészlet: 0, 1, 2, 3, 4, 5, 6, 7
.
Állítás
A jelkészlet legnagyobb értéke mindig eggyel kisebb, mint a számrendszer alapja.
2-es számrendszer jelkészletében 0 és 1 van, 2 nincs (a 2 ábrázolásához új helyiértéket kell behozni), ahogyan 10-es számrendszer jelkészletében is 0, ..., 9 szerepel, a 10-hez már új helyiértéket kell behoznunk (1 tízes és 1 egyes).
Helyiérték#
A helyiértékeket itt a 2-es alapú hatványok fogják adni, azaz a 2-t kell hatványozni.
Nézzünk meg pár helyiértéket!
A 2-es számrendszer első 4 helyiértéke | |||
---|---|---|---|
23 = 8 | 22 = 4 | 21 = 2 | 20 = 1 |
Haladjunk sorban: Nézzük meg az 1-et hogyan ábrázoljuk 2-es számrendszerben!
20 = 1 |
---|
1 |
Ugyanúgy írjuk, ahogyan szoktuk 10-es számrendszerben is.
A helyiérték 1, annak értéke pedig 1, tehát 1 * 1 = 1
És a 2-t hogyan ábrázoljuk 2-es számrendszerben? Nincs 2-es jelünk, csak 0 és 1.
Mit csinálunk 10-es számrendszerben, ha elfogy a jelkészlet?
Gondoljuk meg
8 után jön a 9, majd utána elfogyott a jelkészlet, behozunk 1 darab 1-es jelet a tízesek helyére (ahol ugye 0 áll, csak nem szoktuk kiírni), majd az egyesek helyét 0-ra írjuk. Aztán megyünk felfelé, 11, 12, ..., 19. Most megint 9-hez értünk az egyeseknél. A tízesek helyére eggyel nagyobb jelet írunk, azaz 1 helyett 2-t, az egyesek helyét pedig ismét 0-ra írjuk. Ez egészen megy addig, amíg a tízesek helyén is el nem érjük a 9-est. Tehát 90, 91, .., majd végül a 99 következik. Utána ismét elértük a 9-est az egyesek helyiértéken és immáron a tízesekében is, így új helyiértéket kell behozni, a százasokat, ami eddig 0 értéket képviselt, most 1-re írjuk, a másik két helyiértéket pedig 0-ra írjuk át. Így áll össze a 100-as szám. 1 darab százas (102 = 100) meg 0 darab tízessel (101 = 10) meg 0 darab egyessel (100 = 1). Felírva: 100 * 1 + 10 * 0 + 1 * 0 = 100
Ebből az következik, hogy ahhoz, hogy a 2-es értéket fel tudjuk írni 2-es számrendszerben, új helyiértéket kell behoznunk:
21 = 2 | 20 = 1 |
---|---|
1 | 0 |
Ha összegezzük őket: 2 * 1 + 1 * 0 = 2
Na és a 3-mat hogyan írnánk fel?
Itt még nem szükséges új helyiértéket behozni, hiszen ha az előző példában az 1-es helyiértéket 1-re átírjuk, akkor az pont 3 lesz:
21 = 2 | 20 = 1 |
---|---|
1 | 1 |
Így lesz 3 az értéke: 2 * 1 + 1 * 1 = 3
Nézzük meg a 6-os számot. Írjuk fel 2-es számrendszerbe!
Ehhez már biztosan kelleni fog egy új helyiérték, hiszen a 3-nál mind a két helyiértéken 1-es szerepel, így ennél nagyobb értéket nem tudunk ábrázolni ezen a két helyiértéken.
Ha behozunk egy új helyiértéket, akkor az már elegendő ahhoz, hogy felírhassuk a 6-ot 2-es számrendszerben:
22 = 4 | 21 = 2 | 20 = 1 |
---|---|---|
1 | 1 | 0 |
Helyiértékek (2-es alapú hatványok)#
2-es számrendszer első helyiértékei (kisebbtől a nagyobbig) |
---|
1 |
2 |
4 |
8 |
16 |
32 |
64 |
128 |
256 |
512 |
1024 |
1024 |
0-tól 16-ig binárisan#
Egy kis segítség a továbbiakban a számolásokhoz.
Felfedezhető bizonyos szabályszerűség a bináris számok alakjaiban.
10-es számrendszer | 2-es számrendszer |
---|---|
0 | 0 |
1 | 1 |
2 | 10 |
3 | 11 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
8 | 1000 |
9 | 1001 |
10 | 1010 |
11 | 1011 |
12 | 1100 |
13 | 1101 |
14 | 1110 |
15 | 1111 |
16 | 10000 |
Bináris <--> decimális átváltás#
Kicsi számokat viszonylag könnyű átváltani, de mi a helyzet egy nagyobb számmal?
Hogyan váltanánk át a legelső példaszámunkat, a 745-öt?
Erre létezik egy osztásos módszer, amit a következőképpen írunk fel:
Decimális számrendszerből átváltás tetszőlegesbe
Átváltandó szám | Célszámrendszer
A mi példánk így fest:
745 | 2
-----|--
A bal oldali számot kell osztani maradékosan a célszámrendszer számával, majd a vonal bal oldalára kerül az egész szám, jobb oldalra pedig a maradék.
Tehát itt nem a megszokott osztást kell követni, ahol tizedesjegy pontossággal számolunk, amit kiad a számológép is, hanem a maradékra van szükségünk, amit általános iskolában tanítottak az osztás bevezetésénél.
Például 13 : 2 = 6 és maradék az 1. Hiszen 6 * 2 = 12, + 1 a maradék, így adja ki a 13-mat. Nekünk arra van szükségünk, hogy pontosan hány egésszer van meg benne, és mennyi lesz a maradék.
Egy másik példa 15 : 4 = 3 és maradék a 2. Hiszen 4 * 3 = 12, + 2 a maradék, így adja ki a 15-öt.
Ha 2-es számrendszerbe váltunk át, akkor ha páratlan számot osztunk 2-vel, biztosan 1 lesz a maradék. Ha páros számot osztunk, akkor 0 lesz a maradék.
Azt is csinálhatjuk a 2-es számrendszerbe való átváltás során, hogyha páratlan számot látunk, kivonunk belőle egyet, majd azt osztjuk el 2-vel. Ilyenkor biztosan 1 lesz a maradék, ami jobb oldalra kerül, bal oldalra pedig az egész szám, amiből kivontunk egyet, ezzel párossá téve, majd osztottuk 2-vel.
Addig csináljuk az osztást, amíg bal oldalon ki nem jön a 0! Mivel folyamatosan osztunk egy számot (2-es számrendszer esetében felezünk), így el fogjuk érni a 0-át.
Végigmegyünk a teljes folyamaton:
745 | 2
-----|--
372 | 1
745 : 2 = 372 egész + 1 a maradék. Az egész balra, a maradék jobbra kerül leírásra.
745 | 2
-----|--
372 | 1
186 | 0
372 : 2 = 186 egész, mivel páros számot osztottunk, így egész fele a számnak, tehát a maradék 0.
745 | 2
-----|--
372 | 1
186 | 0
93 | 0
186 : 2 = 93 egész, a maradék 0.
745 | 2
-----|--
372 | 1
186 | 0
93 | 0
46 | 1
93 : 2 = 46 egész, + 1 a maradék.
745 | 2
-----|--
372 | 1
186 | 0
93 | 0
46 | 1
23 | 0
46 : 2 = 23 egész, a maradék 0.
745 | 2
-----|--
372 | 1
186 | 0
93 | 0
46 | 1
23 | 0
11 | 1
23 : 2 = 11 egész, + 1 a maradék.
745 | 2
-----|--
372 | 1
186 | 0
93 | 0
46 | 1
23 | 0
11 | 1
5 | 1
11 : 2 = 5 egész, + 1 a maradék.
745 | 2
-----|--
372 | 1
186 | 0
93 | 0
46 | 1
23 | 0
11 | 1
5 | 1
2 | 1
5 : 2 = 2 egész, + 1 a maradék.
745 | 2
-----|--
372 | 1
186 | 0
93 | 0
46 | 1
23 | 0
11 | 1
5 | 1
2 | 1
1 | 0
2 : 2 = 1, a maradék 0.
745 | 2
-----|--
372 | 1
186 | 0
93 | 0
46 | 1
23 | 0
11 | 1
5 | 1
2 | 1
1 | 0
0 | 1
1 : 2 = 0, + 1 a maradék.
Most hogy végeztünk, már csak annyi dolgunk van, hogy lentről felfelé elkezdjük leírni a számjegyeket egymás után (tehát balról jobbra): 10111010012
Nézzük meg a helyiértékeket:
29 = 512 | 28 = 256 | 27 = 128 | 26 = 64 | 25 = 32 | 24 = 16 | 23 = 8 | 22 = 4 | 21 = 2 | 20 = 1 |
---|---|---|---|---|---|---|---|---|---|
1 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 1 |
Ha összeszámoljuk: 512 * 1 + 256 * 0 + 128 * 1 + 64 * 1 + 32 * 1 + 16 * 0 + 8 * 1 + 4 * 0 + 2 * 0 + 1 * 1 = 745
Nézzünk meg egy nagyobb számot, a 37211-et:
37211 | 2
------|--
18605 | 1
37211 : 2 = 18605 egész, + 1 a maradék.
37211 | 2
------|--
18605 | 1
9302 | 1
18605 : 2 = 9302 egész, + 1 a maradék.
Nem nehezebb átváltani, mint egy kisebb számot, csak tovább tart.
A teljes folyamat:
37211 | 2
------|--
18605 | 1
9302 | 1
4651 | 1
2325 | 1
2325 | 1
1162 | 1
581 | 0
290 | 1
145 | 0
72 | 1
36 | 0
18 | 0
9 | 0
4 | 1
2 | 0
1 | 0
0 | 1
Ismét lentről felfelé kezdjük el leírni a számjegyeket egymás után (tehát balról jobbra): 100100010101111112
Nézzük meg a helyiértékeket:
215 = 32768 | 214 = 16384 | 213 = 8192 | 212 = 4096 | 211 = 2048 | 210 = 1024 | 29 = 512 | 28 = 256 | 27 = 128 | 26 = 64 | 25 = 32 | 24 = 16 | 23 = 8 | 22 = 4 | 21 = 2 | 20 = 1 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
Ha összeszámoljuk: 32768 * 1 + 16384 * 0 + 8192 * 0 + 4096 * 1 + 2048 * 0 + 1024 * 0 + 512 * 0 + 256 * 1 + 128 * 0 + 64 * 1 + 32 * 0 + 16 * 1 + 8 * 1 + 4 * 0 + 2 * 1 + 1 * 1 = 37211
Ezekkel a módszerrel bármilyen nagy számot könnyedén át tudunk váltani oda-vissza a két számrendszer között.
Megjegyzés
Bármilyen számrendszerbe át lehet tízesből váltani ezzel az osztásos módszerrel, csak a célszámrendszer alapszámával kell osztani, és figyelni a maradékokra, amíg bal oldalt meg nem jelenik a 0.
Összeadás#
Adjunk össze két számot kettes számrendszerben!
Vegyünk két számot: 48310 és 74210
Először is, váltsuk át őket.
Kezdjük a 483-mal:
483 | 2
----|--
241 | 1
120 | 1
60 | 0
30 | 0
15 | 0
7 | 1
3 | 1
1 | 1
0 | 1
48310 = 1111000112
A gyakorlás kedvéért megnézzük helyiértékesen is:
28 = 256 | 27 = 128 | 26 = 64 | 25 = 32 | 24 = 16 | 23 = 8 | 22 = 4 | 21 = 2 | 20 = 1 |
---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 |
Összegezve: 256 * 1 + 128 * 1 + 64 * 1 + 32 * 1 + 16 * 0 + 8 * 0 + 4 * 0 + 2 * 1 + 1 * 1 = 483
742 átváltása:
742 | 2
----|--
371 | 0
185 | 1
92 | 1
46 | 0
23 | 0
11 | 1
5 | 1
2 | 1
1 | 0
0 | 1
74210 = 10111001102
Helyiértékesen:
29 = 512 | 28 = 256 | 27 = 128 | 26 = 64 | 25 = 32 | 24 = 16 | 23 = 8 | 22 = 4 | 21 = 2 | 20 = 1 |
---|---|---|---|---|---|---|---|---|---|
1 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
Összegezve: 512 * 1 + 256 * 0 + 128 * 1 + 64 * 1 + 32 * 1 + 16 * 0 + 8 * 0 + 4 * 1 + 2 * 1 + 1 * 0 = 742
Írjuk a két számot egymás alá, ahogyan írásban szokás összeadni:
111100011
+ 1011100110
----------
Ugyanúgy kell összeadni, ahogyan tízes számrendszerbeli számoknál szokás:
- 0 + 0 = 0 lesz.
- 0 + 1 vagy 1 + 0 = 1 lesz.
- 1 + 1 = 0 lesz, és marad az 1.
Kezdjük a legkisebb helyiértéken (jobb széle):
111100011
+ 1011100110
----------
1
1 + 0 = 1, nem maradt semmi.
1
111100011
+ 1011100110
----------
01
1 + 1 = 0, és maradt az 1 (fent van jelezve 1-essel a következő összeadandó helyiértékeknél a maradék).
1
111100011
+ 1011100110
----------
001
0 + 1 = 0, de a korábbi 1-et hozzáadva már 0 lesz, és marad az 1.
111100011
+ 1011100110
----------
1001
0 + 0 = 0, de a korábbi 1-et hozzáadva 1 lesz, nem maradt semmi.
111100011
+ 1011100110
----------
01001
0 + 0 = 0, nem maradt semmi.
1
111100011
+ 1011100110
----------
001001
1 + 1 = 0, maradt az 1.
1
111100011
+ 1011100110
----------
1001001
1 + 1 = 0, korábbi 1-es miatt 1 lesz, és maradt az 1.
1
111100011
+ 1011100110
----------
11001001
1 + 1 = 0, korábbi 1-es miatt 1 lesz, és maradt az 1.
1
111100011
+ 1011100110
----------
011001001
1 + 0 = 0, de a korábbi 1-es miatt 0 lesz, maradt az 1.
111100011
+ 1011100110
-----------
10011001001
1 + a korábban maradt 1-es az 0, maradt az 1.
Mivel nincs több helyiértékes szám, így leírjuk ezt a maradék 1-et egy új helyiértékre.
Az összeadás eredménye 100110010012 = 122510
483 + 742 = 1225
Kivonás#
A kivonás is hasonlóan megy, ahogyan azt megszoktuk írásban.
Vonjuk ki a 639-ből a 231-et.
Ezeknek az átváltása legyen önálló feladat gyakorlásként!
63910 = 10011111112
23110 = 111001112
Írjuk fel őket a szokásos módon (fent lesz a kisebbítendő, lent pedig a kivonandó):
1001111111
- 11100111
----------
Ugyanúgy vonunk ki, ahogyan a 10-es számrendszerbeli számokkal szokás:
- 1-hez, hogy 1 legyen, kell 0.
- 0-hoz, hogy 1 legyen, kell 1.
- 1-hez, hogy 0 legyen, kell 1, és maradt az 1.
Az első lépés:
1001111111
- 11100111
----------
0
1-hez, hogy 1 legyen, kell 0, nem maradt semmi.
1001111111
- 11100111
----------
00
1-hez, hogy 1 legyen, kell 0, nem maradt semmi.
1001111111
- 11100111
----------
000
1-hez, hogy 1 legyen, kell 0, nem maradt semmi.
1001111111
- 11100111
----------
1000
0-hoz, hogy 1 legyen, kell 1, nem maradt semmi.
1001111111
- 11100111
----------
11000
0-hoz, hogy 1 legyen, kell 1, nem maradt semmi.
1001111111
- 11100111
----------
011000
1-hez, hogy 1 legyen, kell 0, nem maradt semmi.
1001111111
- 11100111
----------
0011000
1-hez, hogy 1 legyen, kell 0, nem maradt semmi.
+1
1001111111
- 11100111
----------
10011000
1-hez, hogy 0 legyen, kell 1, és maradt az 1.
+1
1001111111
- 11100111
----------
110011000
0-hoz hozzáadjuk a maradék 1-et, 1-hez, hogy 0 legyen, kell 1, és maradt az 1.
1001111111
- 11100111
----------
0110011000
0-hoz hozzáadjuk a maradék 1-et, 1-hez, hogy 1 legyen, kell 0, és nem maradt semmi.
A kivonás különbsége 01100110002 = 40810
639 - 231 = 408
Megjegyzés
Ha kisebb számból nagyobbat vonnánk ki, a szokásos módon a végén ki kell tenni a különbség elé mínusz előjelet.
Szorzás#
A szorzás is a megszokott módon megy írásban.
Legyen a két számunk: 149 és 79
Az átváltást végezzük el önállóan!
14910 = 100101012
7910 = 10011112
Írjuk fel őket ahogyan a szorzásoknál szokás:
10010101 * 1001111
--------
Ugyanúgy szorzunk, ahogyan azt megszoktuk:
- 0 * 0 = 0
- 1 * 0 = 0
- 1 * 1 = 1
10010101 * 1001111
--------
1
1 * 1 az 1.
10010101 * 1001111
--------
01
0 * 1 az 0.
Mivel ez viszonylag egyszerű, nem részletezzük az összes lépést egyesével.
10010101 * 1001111
--------
10010101
00000000
00000000
10010101
10010101
10010101
10010101
+ --------------
Megfigyelhető, hogy ahol a jobb oldali tényezőnél 1-es van, ott a bal oldali tényezőt kell leírni ugyanúgy (mivel "valami" * 1 = "valami"), ahol pedig 0 szerepel, ott ki kell nullázni az adott sort (hiszen "valami" * 0 = 0).
Most már "csak" össze kell adnunk őket, viszont itt ez a tornyosodás miatt nehezebb, mint két szám összeadása:
10010101 * 1001111
--------
10010101
00000000
00000000
10010101
10010101
10010101
10010101
+ --------------
1
Simán leírjuk az 1-et.
10010101 * 1001111
--------
10010101
00000000
00000000
10010101
10010101
10010101
10010101
+ --------------
11
0 + 1 = 1, nem maradt semmi.
10010101 * 1001111
--------
10010101
00000000
00000000
10010101
10010101
10010101
10010101
+ --------------
011
1 + 0 + 1 = 0, maradt az 1.
10010101 * 1001111
--------
10010101
00000000
00000000
10010101
10010101
10010101
10010101
+ --------------
1011
0 + 1 + 0 + 1 = 0, korábbi 1-es miatt 1 lesz, és maradt az 1.
10010101 * 1001111
--------
10010101
00000000
00000000
10010101
10010101
10010101
10010101
+ --------------
11011
1 + 0 + 1 + 0 + 0 = 0, korábbi 1-es miatt 1 lesz, és maradt az 1.
10010101 * 1001111
--------
10010101
00000000
00000000
10010101
10010101
10010101
10010101
+ --------------
111011
0 + 1 + 0 + 1 + 0 + 0 = 0, korábbi 1-es miatt 1 lesz, és maradt az 1.
10010101 * 1001111
--------
10010101
00000000
00000000
10010101
10010101
10010101
10010101
+ --------------
1111011
0 + 0 + 1 + 0 + 0 + 0 + 1 = 0, korábbi 1-es miatt 1 lesz, és maradt az 1.
10010101 * 1001111
--------
10010101
00000000
00000000
10010101
10010101
10010101
10010101
+ --------------
1111011
0 + 0 + 1 + 0 + 0 + 0 + 1 = 0, korábbi 1-es miatt 1 lesz, és maradt az 1.
10010101 * 1001111
--------
10010101
00000000
00000000
10010101
10010101
10010101
10010101
+ --------------
11111011
1 + 0 + 0 + 1 + 0 + 0 + 0 = 0, korábbi 1-es miatt 1 lesz, és maradt az 1.
10010101 * 1001111
--------
10010101
00000000
00000000
10010101
10010101
10010101
10010101
+ --------------
111111011
1 + 0 + 0 + 0 + 0 + 1 = 0, korábbi 1-es miatt 1 lesz, és maradt az 1.
10010101 * 1001111
--------
10010101
00000000
00000000
10010101
10010101
10010101
10010101
+ --------------
0111111011
1 + 0 + 0 + 0 + 0 = 1, korábbi 1-es miatt 0 lesz, és maradt az 1.
10010101 * 1001111
--------
10010101
00000000
00000000
10010101
10010101
10010101
10010101
+ --------------
10111111011
1 + 0 + 0 + 1 = 0, korábbi 1-es miatt 1 lesz, és maradt az 1.
10010101 * 1001111
--------
10010101
00000000
00000000
10010101
10010101
10010101
10010101
+ --------------
110111111011
0 + 0 + 0 = 0, korábbi 1-es miatt 1 lesz, nem maradt semmi.
10010101 * 1001111
--------
10010101
00000000
00000000
10010101
10010101
10010101
10010101
+ --------------
0110111111011
0 + 0 = 0, nem maradt semmi.
10010101 * 1001111
--------
10010101
00000000
00000000
10010101
10010101
10010101
10010101
+ --------------
10110111111011
Simán leírjuk az 1-et.
A szorzat 101101111110112 = 1177110
149 * 79 = 11771
Osztás#
Az osztást is a szokásos módon végezhetjük.
Osszuk el a 25-öt 3-mal!
Az átváltást akár helyiértékes felírással is elvégezhetjük.
2510 = 110012
310 = 112
Írjuk fel az osztást:
11001 : 11 =
Mivel kétjegyű az osztónk, így az osztandót legalább 2 jegytől kell vizsgálni.
11'001 : 11 = 1
0
3-ban a 3 megvan egyszer, 3-hoz, hogy 3 legyen, kell 0.
110'01 : 11 = 10
00
0-ban a 3 megvan nullaszor, 0-hoz, hogy 3 legyen, kell 0.
1100'1 : 11 = 100
000
0-ban a 3 megvan nullaszor, 0-hoz, hogy 3 legyen, kell 0.
11001 : 11 = 1000
0001
1
1-ben a 3 megvan nullaszor, 0-hoz, hogy 1 legyen, kell 1.
A hányados 10002 = 810 lett, és maradt az 1.
810 * 310 + 110 = 2510
Most osszuk el a 23-mat 3-mal!
Az átváltás ismét önálló feladat.
2310 = 101112
310 = 112
Írjuk fel az osztást:
10111 : 11 =
Mivel kétjegyű az osztónk, így az osztandót legalább 2 jegytől kell vizsgálni.
Viszont az első két számjegy (102 = 210) értéke kisebb, mint maga az osztó (112 = 3 10) értéke, így az első 3 számjegyet kell venni az osztandónál.
101'11 : 11 = 1
10
1012 = 510, tehát a 3 csak egyszer lesz meg az 5-ben, így 1 * 3-hoz, hogy 5 legyen, kell 2 (aposztróffal jelöljük, hogy hol tartunk).
1011'1 : 11 = 11
101
10
Lehoztuk a következő számjegyet, 1 1-est. 1012 = 510, tehát a 3 csak egyszer lesz meg az 5-ben, így 1 * 3-hoz, hogy 5 legyen, kell 2.
10111 : 11 = 111
101
101
10
Lehoztuk a következő számjegyet, 1 1-est. 1012 = 510, tehát a 3 csak egyszer lesz meg az 5-ben, így 1 * 3-hoz, hogy 5 legyen, kell 2.
A hányados 1112 = 710 lett, és maradt a 2.
710 * 310 + 210 = 2310
A 16-os számrendszer (hexadecimális)#
A 16-os számrendszert azért használjuk az informatikában, hogy "rövidítsük" a 2-es számrendszerbeli számokat, mivel azok nagyon hosszúak tudnak lenni egy-egy érték kifejezésére.
16-os számrendszerben sokkal kevesebb helyiérték kell egy nagyobb érték leírásához, ráadásul gyorsan lehet 16-osból 2-esbe és 2-esből 16-osba átváltani!
Mi jön a 9-es szám után jelölésben?#
A 9-es számjegy után az angol ABC betűit használjuk.
Megjegyzés
Mivel az angol ABC 26 karakterből áll, így ki lehet számolni, hogy 10 (számjegyek darabszáma) + 26 (angol ABC betűi) = 36-os számrendszer a legnagyobb, amit még értelmezünk, annál nagyobbra ez a fajta jelölés nem alkalmas, új jelölölő karaktereket kellene bevezetni a jelkészletbe, de ez túlmutat ezen fejezeten.
Jelkészlet#
0, ..., 9-ig tartott a 10-es számrendszer jelkészlete. Még további 6 jelölőre lenne szükségünk a 16-os számrendszerben.
Így lesz a jelkészlete: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Lehet kisbetűvel is írni a betűket, az nem tesz különbséget.
Helyiérték#
Mennyit is érnek a betűk, hogyan kell elképzelni?
A 16-os számrendszer jelkészletének értékei:
Hexadecimális | Érték |
---|---|
A | 10 |
B | 11 |
C | 12 |
D | 13 |
E | 14 |
F | 15 |
Számoljunk egy kicsit a decimális (10-es) számrendszerben:
- 8: Ezzel nincs gond, le tudjuk írni simán.
- 9: Ezt is le tudjuk írni, nem kell új helyiérték.
- 10: Itt elfogyott a jelkészlet, új helyiértéket (tízesek) hoztunk be.
Hexadecimális számrendszerben az első két pont megegyezik, a 3. viszont máshogyan fest:
- A16 (= 1010): Van még jelkészletünk a nagyobb értékre, mint 9, azaz nem kell új helyiértéket behozni, így a 10-es értéket egy A betűvel tudjuk jelölni.
Ábrázoljunk néhány számot helyiértékesen!
Legyen az első érték a 910:
160 = 1 |
---|
9 |
A következő a 1010:
160 = 1 |
---|
A |
A következő a 1510:
160 = 1 |
---|
F |
A következő a 1610 lesz, amihez viszont már szükség lesz egy új helyiértékre:
161 = 16 | 160 = 1 |
---|---|
1 | 0 |
Végezetül a 1710:
161 = 16 | 160 = 1 |
---|---|
1 | 1 |
Átváltások#
Most már ismerjük a 10-es számrendszerből bármilyen számrendszerbe való átváltást.
Nézzünk meg még néhány fontosabb átváltást, trükköt!
Decimális --> Hexadecimális átváltás#
A decimálisból binárisba váltó módszer itt is működik, csak 16-tal kell osztani.
Vegyük a 30010-as számot:
300 | 16
----|---
18 | C (12)
1 | 2
0 | 1
Ha a maradék nagyobb, mint 10, azt a megfelelő jellel kell jelölnünk, ahogyan a legelső esetnél látható.
Végül lentről felfelé olvasva megkapjuk, hogy 12C16 lett az hexadecimális alak.
Hexadecimális --> Decimális átváltás#
Ugyanúgy kell csinálni, ahogyan a binárisnál már néztük a decimálisba váltást.
Vegyük példának a 28D16 számot!
Írjuk fel helyiértékesen!
162 = 256 | 161 = 16 | 160 = 1 |
---|---|---|
2 | 8 | D |
Annyi a különbség, hogy a betűk helyére be kell írnunk a megfelelő értéket. Tehát D helyett 13-mat írunk.
Összegezve: 256 * 2 + 16 * 8 + 1 * 13 = 653
Hexadecimális --> Bináris#
Ez az átváltás még egyszerűbb, mint a korábbiak!
Viszont már gyakorlatiasan kell mozogni a bináris számrendszerben hozzá.
Legyen a példaszámunk a 2C16 = 4410
A 16 a 2-nek a 4. hatványa (24 = 16), ebből következik, hogy egyesével nézzük a hexadecimális szám jegyeit, majd felírjuk őket bináris alakban!
Az első a 2-es lesz: 102
Majd a C, aminek az értéke 12, ami binárisan így fest: 11002
Ha ezeket leírjuk egymás után, akkor a 1011002 számot kapjuk, ami 4410, tehát jó az átváltás.
Kérdés
Nehéznek tűnik?
Tipp
Próbáljunk magunk elé képzelni a helyiértékes táblázatot, hogy hová kellene 1-est írni, hogy pontosan kijöjjön az érték! Természetesen rajzolhatunk is egyet magunknak, próbálgathatjuk, kis gyakorlással, idővel ráérez az ember.
Tipp
Egy másik lehetőség, hogy a számból mindig kivonjuk a célszámrendszer legnagyobb kivonható helyiértéket, ami >= 0. Például a 1210-t 2-es számrendszerbe úgy lehetne átváltani, hogy magunk elé vesszük a 2-es számrendszer helyiértékeit. 16-ot nem tudunk kivonni belőle, mert az negatív szám lesz. Az eggyel kisebb helyiérték a 8-as. Ezt ki tudjuk vonni belőle úgy, hogy >= lesz, mint 0, így ez biztosan lesz benne. A 8-as helyiértékére írhatunk 1-et. Kivonjuk ezt a helyiértéket a számunkból: 12 - 8 = 4. Most ezt vizsgáljuk úgy, ahogyan kezdtük. A következő helyiérték a 8-as után a 4 lesz. Ha ezt kivonjuk, akkor 4 - 4 = 0, tehát megvagyunk. Így 4-es is szerepel benne, erre a helyiértékre is 1-est írunk. 2-es és 1-es helyiértékekre pedig 0-át, hiszen már nincs miből kivonni való. Így lett 11002 a számunk.
Bináris --> Hexadecimális#
Ezen átváltás pedig az előzőhöz hasonlatos.
Példaszámunk most a 10011111011012 = 510110
Itt pedig 4-es csoportokat kell képezni a bináris számból jobbról balra haladván a számjegyeken.
Így lesz a következő a tagolás: 1|0011|1110|1101
Most pedig visszafelé kell gondolkozni az előző átváltáshoz képest, ugyanis hexadecimális értékekké kell átváltani ezeket a 4-es csoportokat!
Az első az 1 lesz: 116
A második a 0011 lesz: 316
A harmadik a 1110 lesz: 14, ami E16
Az utolsó a 1101 lesz: 13, ami D16
Ha ezeket egymás után leírjuk, akkor a 13ED16 számot kapjuk, ami 510110, stimmel az átváltás.
Hasznos linkek#
Számrendszerek közötti átváltások:
Videók: