Számrendszerek és bázisok

Az olyan bázisrendszerek, mint a bináris és a hexadecimális, elsőre kissé furcsának tűnnek. A kulcs annak megértése, hogy a különböző rendszerek hogyan “ketyegnek”, mint egy kilométeróra, amikor tele van. A 10-es bázis, a mi decimális rendszerünk, akkor “ketyeg”, amikor 10 elemet kap, és egy új számjegyet hoz létre. Várunk 60 másodpercet, mielőtt “átketyegünk” egy új percre. A hexa és a bináris rendszer hasonló, de 16, illetve 2 tételenként ketyegnek tovább.

Próbáld meg itt a számok hexára és binárisra való átváltását:

Még régen: Unáris számok

Még régen nem voltak bázisrendszerek! Mindkét út felfelé vezetett, havon és tikkasztó hőségen keresztül. Ha egyet akartál számolni, azt írtad:

l

Ha ötöt akartál, azt írtad

lllll

És nyilván 1 + 5 = 6

l + lllll = llllll

Ez a számolás legegyszerűbb módja.

Belépnek a rómaiak

A római számmisztikában a kettő egy volt, kétszer. A három egy volt, háromszor:

one = Itwo = IIthree = III

Mégis úgy döntöttek, hogy jobbat tudnak a régi hagyománynál, a homokba tett vonalaknál. Öt esetében a V-t használhattuk az lllll jelzésére, és valami olyasmit kaptunk, mint

l + V = Vl

Nem rossz, mi? És persze még sok más szimbólumot (L, C, M stb.) is használhatunk.

A lényeg az, hogy V és lllll az 5 szám kódolásának kétféle módja.

Adjunk minden számnak nevet

A másik áttörés annak felismerése volt, hogy minden szám lehet egy különálló fogalom. Ahelyett, hogy a hármat egyesek sorozataként ábrázolnánk, adjunk neki saját szimbólumot: “3″. Csináljuk ezt egytől kilencig, és megkapjuk a szimbólumokat:

1 2 3 3 4 5 6 7 8 9

A rómaiak közel jártak, nagyon közel, de csak az 5, 10, 50, 100, 1000 stb. számoknak adtak egyedi szimbólumokat.

Használjuk a helyzetünket

Most már világos, hogy nem lehet minden számnak saját szimbólumot adni. Egyszerűen túl sok van belőlük.

De figyeljünk meg egy meglátást a római számokkal kapcsolatban: a szimbólumok pozícióját használják a jelentés jelölésére.

A IV azt jelenti, hogy “vonj le 1-et 5-ből″

és a VI azt jelenti, hogy “adj hozzá 1-et 5-höz″.

A mi számrendszerünkben hasonló módon használjuk a pozíciót. Mindig összeadunk és soha nem vonunk ki. És minden pozíció 10-tel több, mint az előtte lévő.

A 10-es bázis választása

Miért döntöttünk úgy, hogy minden alkalommal 10-zel szorzunk? Valószínűleg azért, mert 10 ujjunk van.

Egy dolog, amit észre kell vennünk, hogy elég számjegyre van szükségünk ahhoz, hogy “feltöltsük” a következő számig. Hadd mutassam be.

Ha úgymond minden 10-es számnál át akarjuk tekerni a kilométerórát, akkor az egytől kilencig terjedő számok szimbólumaira van szükségünk; még nem értünk el a tízhez. Képzeljük el a számokat úgy, mintha lassan ketyegnének felfelé – melyik ponton lapozzuk át a következő egységet, és kezdjük a nulláról?

Nulla beírása

És mi történik, ha elérjük a tízet? Hogyan mutatjuk meg, hogy pontosan egy “tízest” akarunk, és semmit az “egyesek” oszlopban?

A nullát használjuk, a nem létező számot. A nulla egy egész fogalom, ez egy helyőrző, egy üres hely, egy szóköz, és még sok minden más. Elég, ha azt mondjuk, hogy a nulla minden idők egyik legnagyobb találmánya.

A nulla lehetővé teszi számunkra, hogy legyen egy üres helytartónk, amivel a rómaiak nem rendelkeztek. Nézd meg, milyen nehézkes számok vannak nélküle.

George Orwell híres “1984″ című regénye “MCMLXXXIV” lenne! Jól gördül le a nyelvről, nem igaz?

Más bázisokat figyelembe véve

Emlékezzünk arra, hogy úgy döntöttünk, hogy tízenként átforgatjuk a kilométeróránkat. A számolásunk így néz ki:

123456789 (uh oh, I'm getting full!)10 (ticked over – start a new digit)

Mi lenne, ha 60-nál ketyegnénk tovább, amikor számolunk, ahogy a másodperceknél és a perceknél tesszük?

1 second2345…58591:00 (60 seconds aka 1 minute. We've started a new digit.)

Minden rendben volt eddig, igaz? Figyeljük meg, hogy a kettőspont (:) jelzi, hogy egy új “számjegynél” vagyunk. A 10-es bázisban minden egyes számjegy önmagában is állhat.

Kipróbáljuk a 16-os bázist

Ha a 16-os bázist akarjuk, valami hasonlót tehetnénk:

123456789101112131415 (we're getting full)1:00 (16 – we've started a new digit)

A hexadecimális számokat azonban nem akarjuk a kettőspont jelöléssel írni (pedig lehetne). Inkább külön szimbólumokat főzünk ki a 10-15-re, hogy csak úgy írhassunk számokat, ahogy megszoktuk. Kifogytunk a számokból (az 1-9-et már felhasználtuk, a 0-t pedig helyőrzőnek), így szükségünk van más szimbólumokra. Használhatnánk néhány szaggatott vonalat vagy más alakzatot, de a konvenció az, hogy betűket használjunk, római stílusban. Ahogy az 5-ből V lett, a programozók A-F betűket használnak, hogy 16-ig elegendő számjegyet kapjanak. Vagyis,

123456789A (10 – we're using the symbol "A")B (11)C (12)D (13)E (14)F (15 – uh oh, we're getting full)10 (16 – we start a new digit)

Ahah! Most már “helyenként” egy számjegyet használhatunk, és tudjuk, hogy a 10 valójában azt jelenti, hogy egyszer “átkeltünk 16-ig”.

20 azt jelenti, hogy kétszer átkeltünk 16-ig (32).

25 azt jelenti, hogy kétszer átkeltünk 16-ig (így 32-t kapunk), és még egy plusz 5-öt. A végeredmény 32 + 5 = 37.

Gyors áttekintés

Még mindig velem vagy? Ez elég király, nem? Bármilyen rendszerben számolhatunk, ahogy akarunk. Figyeljük meg azt is, hogy a 16-os bázis “helytakarékosabb” abban az értelemben, hogy egy olyan számot, mint a 11, egy számjegyűre írhatunk: B.

A 16-os bázis valójában nem sokban különbözik a 10-es bázistól, csak tovább tart, amíg kitöltjük.

A bináris számok csodálatos világa

Már rengeteg bázisrendszert láttunk, a túlságosan egyszerű egyjegyűtől kezdve, a fáradhatatlan római számokon, a stabilan működő 10-es bázison át a kompakt 16-os bázisig.

Mi a jó a binárisban? Az egyszerűség jegyében ez a legegyszerűbb számrendszer, amely rendelkezik a “ketyegés” fogalmával. Az unáris számrendszer, ahol csak 1, 11, 111… írunk, a végtelenségig tart. A bináris, két lehetőséggel (1 és 0) így néz ki:

1: 12: 10 (we're full – tick over)3: 114: 100 (we're full again – tick over)5: 1016: 1107: 1118: 1000 (tick over again)…

és így tovább.

Miatt a bináris olyan egyszerű, nagyon könnyű hardverbe építeni. Csak olyan dolgokra van szükségünk, amelyek be- vagy kikapcsolhatók (az 1-et és a 0-t reprezentálva), nem pedig olyan dolgokra, amelyeknek 10 lehetséges állapotuk van (a tizedes számjegyek ábrázolásához).

Miatt ilyen egyszerű, a bináris rendszer a hibákkal szemben is ellenálló. Ha a jelünk “részben be van kapcsolva” (mondjuk 0,4), akkor feltételezhetjük, hogy ez egy nulla. Ha pedig nagyrészt be van kapcsolva (mondjuk 0,8), akkor feltételezheted, hogy az 1. Ha egy 10 lehetséges állapotú rendszert használsz, akkor nehéz megmondani, hogy mikor történt hiba. Ez az egyik oka annak, hogy a digitális jelek olyan ellenállóak a zajjal szemben.

Más példák bázisokra

Más bázisokat használunk állandóan, még dinamikusan változó bázisokat is. Általában nem így gondolunk rá:

Órák, percek, másodpercek: 1:32:04

  • Tudjuk, hogy ez 1 óra, 32 perc, 4 másodperc. Másodpercekben ez 16060 + 32*60 + 4.

Láb és hüvelyk: Ez 3 láb, 5 hüvelyk vagy 3 * 12 + 5 hüvelyk.

Font és uncia:

  • Mivel egy font 16 oz, ez 8 * 16 + 5 oz. Végig a 16-os bázisú számrendszert használtuk!

Megosztó gondolatok

A “10″ bármelyik számrendszerben a bázist jelzi, és azt jelenti, hogy egyszer átkeltünk. A 10 a binárisban kettőt jelent, a 10 a decimálisban tizet, a 10 a hexadecimálisban pedig tizenhatot.

Hogyan tartod ezeket a számokat egymástól távol? A programozók gyakran írnak “0b”-t a bináris számok elé. Tehát a 2 binárisan

0b10

Hasonlóan a hexa számok elé 0x-et írnak. Tehát a 16 hexában:

0×10

Ha nincs előtte semmilyen szimbólum (0b vagy 0x), akkor feltételezzük, hogy ez a 10-es bázis, egy normál szám.

Most pedig menjetek, és élvezzétek az új tudásotokat!

Más hozzászólások ebben a sorozatban

  1. Számrendszerek és bázisok
  2. A GUID-ok gyors útmutatója
  3. A Quake gyors inverz négyzetgyökének megértése
  4. Egyszerű bevezetés a számítógépek világába. Hálózatok
  5. Két változó felcserélése az XOR segítségével
  6. A Big és Little Endian bájtsorrend megértése
  7. Unicode és te
  8. Egy kis tananyag a bináris fájlformátumokról
  9. Sorolási algoritmusok

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.