13 Silmaring: Arvusüsteemid

Arvud ja numbrid. Kümnendsüsteem

Alustame terminitest “arv” ja “number”, mida üsna sageli segi aetakse. Sellele lisab hoogu asjaolu, et inglise keeles on sõna “arv” vasteks just “number” ja juhtub, et tõlkides jäetakse ka eesti keeles sõnaks “number”. Samuti on eesti keeles mitmeid termineid, kus “number” on kinnistunud, aga tegelikult on pigem arvu tähenduses (nt telefoninumber, kinganumber, passinumber).

Niisiis püüdes sellest mitte liiga suurt numbrit teha, peame vähemalt selles materjalis neil mõistetel vahet tegema.

Ajalooliselt oli arv loendamise tulemus. Loendades saame naturaalarvud 1, 2, 3, 4, 5 jne. 0 võetakse mõnes kontekstis naturaalarvude hulka, mõnes mitte. Eks siin olegi mõneti filosoofiline küsimus – kas siis, kui midagi ei ole loendatud, saab üldse rääkida loendamise tulemusest! Hiljem arvude mõistet laiendati – räägiti täisarvudest, ratsionaalarvudest, reaalarvudest, kompleksarvudest. Meie jääme siin põhiliselt täisarvude juurde.

Igatahes tekkis arvudega koos vajadus neid kirja panna. Kasutusel on olnud väga erinevaid süsteeme. Tänapäeval on kõige levinum viis panna arve kirja araabia numbrite abil. Algselt India päritolu märgid jõudsid Araabia kaudu Euroopasse. Seejuures 0 võeti teistest numbritest märgatavalt hiljem kasutusse. Numbreid on klassikaliselt kasutusel kümme, need on 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Numbrid on sümbolid – märgid, mille abil arve kirja pannakse.

Arve, mida kirja panna tuleb, on muidugi palju rohkem kui kümme. Teoreetiliselt on neid lausa lõpmatult palju. Kui väikeste naturaalarvude puhul saame ühe numbriga arvu kirja pandud, siis edasi peab kasutama mingit süsteemi. Nii ongi kujunenud, et lisaks numbri enda väärtusele loeb ka tema positsioon. Näiteks arvus 77 on esimese 7 tähendus tegelikult 70 ja teisel 7. Sellist süsteemi nimetatakse positsiooniliseks arvusüsteemiks.

Näiteks arvu 2016 juppideks võttes saame 2016 = 2000 + 10 + 6. Näeme, et 0 on väga oluline ja näitab, et sajalisi pole. Veel detailsemalt saame, et 2016 = 2 · 103 + 0 · 102 + 1 · 101 + 6 · 100. Tähele tuleb panna, et arvu väärtuse leidmisel hakatakse tegelikult pihta paremalt. Paremalt esimene number näitab üheliste (100 = 1) arvu, teine number kümneliste (101 = 10) jne. Lühematel juhtudel näeme muidugi peale vaadates ära, mis positsioonil paremalt viimane ehk vasakult esimene number on. Pikematel juhtudel aga tulebki paremalt lugema hakata.

Enesekontroll (1 ülesanne)

Kuna on kasutada kümme erinevat numbrit, siis nimetatakse seda süsteemi kümnendsüsteemiks. See on laialt levinud, seejuures ka näiteks mõõtühikute (sh rahaühikute) juures. Siiski pole tegemist ainukese võimaliku arvusüsteemiga. Aegade jooksul on kasutuses olnud väga erinevad süsteemid. (Näiteks ka rahaühikute korral – Suurbritannia naelsterling jaotub 100 penniks alles alates 1971. aastast.)

Arvusüsteemid pole alati (puhtalt) positsioonilised olnud. Näiteks rooma numbrite puhul on positsioon küll oluline, aga hoopis teistsuguse süsteemi järgi. Meie jätkame ikkagi positsiooniliste süsteemidega.

Kahendsüsteem

Vaatleme nüüd sellist süsteemi, kus numbreid on ainult kaks: 0 ja 1. Tegemist on kahendsüsteemiga. Arvude üles kirjutamise idee on samasugune nagu kümnendsüsteemis. Esialgu saame hakkama ühe numbriga. Kui loendatavaid elemente pole, siis on neid 0 ja kui on üks, siis on 1. Rohkem aga erinevaid numbreid pole. Tekib samasugune olukord nagu kümnendsüsteemis arvu 9 puhul, mille järel enam uusi numbreid pole. Nagu kümnendsüsteemiski, tuleb nüüd kasutusele kirjapilt 10, mis tähendab siis tavamõttes kahte, arvutus oleks selline: 1 · 21 + 0 · 20.

Rõhutada tuleb, et tegemist on loendamise mõttes ikka sama arvuga, lihtsalt kirjapilt on erinev. Selleks, et eristada erinevaid aluseid, märgitakse neid alaindeksitega, seega 102 = 210. Pythonis aga pannakse kahendarvudele ette 0b. Näiteks 0b10 on siis tavamõttes 2.

Toome tabeli mõningate arvudega.

Kümnendarv Kahendarv
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
11 1011
14 1110
15 1111
16 10000
31 11111
32 100000
63 111111
64 1000000

Näeme, et erinevates süsteemides on “ümmargused” hoopis erinevad arvud. Hea võimalus juubelite tähistamiseks!

Kahendarvudel on praktiline väärtus just arvutitega seoses. Nimelt on kahte võimalikku seisundit palju hõlpsam realiseerida kui näiteks kümmet erinevat. Lamp põleb / ei põle. Mälupesas on midagi / ei ole.

Kahendarv koosneb kahendnumbritest. Inglise keeles on kahendnumber binary digit, millest on tuletatud mõõtühiku nimeks bit. Bitt ongi informatsiooni põhiühikuks.

Kahendarvudega saab tehteid teha analoogiliselt kümnendarvudega, aga seda me siinkohal ei vaatle. See ei takista siiski selleteemalise küsimuse esitamist.

Enesekontroll (1 ülesanne)

Neile, kes kahendsüsteemist väga vaimustatud on, võivad näiteks huvi pakkuda kahendsüsteemis (tegelikult küll modifitseeritud viisil) aega näitavad kellad.

Kaheksandsüsteem. Kuueteistkümnendsüsteem

Kahendarvud lähevad kiiresti pikaks ja see on üks põhjus, miks kasutatakse kaheksandarve ja kuueteistkümnendarve. Kuna 8 ja 16 on 2 astmed, siis on konverteerimine näiteks kuueteistkümnendsüsteemi ja kahendsüsteemi vahel oluliselt lihtsam kui kümnendsüsteemi ja kahendsüsteemi vahel.

Kaheksandsüsteemis saab endiselt tavalisi numbreid kasutada, lihtsalt 8 ja 9 jäävad kasutamata. Kuueteistkümmendsüsteemis enam kümnest märgist ei piisa. Spetsiaalseid numbreid pole juurde mõeldud, kasutatakse tähti A, B, C, D, E ja F.

Lisame eelmisele tabelile kaheksandarvude ja kuueteistkümnendarvude veerud.

Kümnendarv Kahendarv Kaheksandarv Kuueteistkümnendarv
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
14 1110 16 E
15 1111 17 F
16 10000 20 10
31 11111 37 1F
32 100000 40 20
63 111111 77 3F
64 1000000 100 40

Kuidas mõista kaheksandarvu 137? Nüüd on aluseks 8, mis tähendab, et

1378 = 1 · 82 + 3 · 81 + 7 · 80 = 64 + 24 + 7 = 95

Vaatleme ka kahte kuueteistkümnendarvu. Neis võivad numbritena olla tähed tähestiku algusest, aga ei pruugi olla. Näiteks arvestades, et A on kümnendsüsteemi 10 ja D on 13, saame

A2D16 = 10 · 162 + 2 · 161 + 13 · 160 = 2560 + 32 + 13 = 2605

ja

101016 = 1 · 163 + 0 · 162 + 1 · 161 + 0 · 160 = 4096 + 16 = 4112.

Pythonis on kaheksandsüsteemis arvu märkimiseks kasutusel prefiks (eesliide) 0o ja kuueteistkümnendarvude jaoks 0x.

Kuueteistkümnendarve kasutatakse sageli näiteks mäluaadressides ja ka värvide märkimiseks. Erinevate värvide kuueteistkümnendkoode saab vaadata siit. Neid saame ka kilpkonnagraafikas kasutada. Näiteks turtle.pencolor('#85e085') mõjul muutub kilpkonna joon heleroheliseks.

Kaheksandsüsteemi arve kasutatakse näiteks mõnedes operatsioonisüsteemides failidele juurdepääsu õiguste määramiseks. Näiteks Unixis annab käsk chmod 664 mingifail.txt kasutajale ja rühmale õiguse lugeda ja kirjutada, aga mitte käivitada. Teised saavad ainult õiguse lugeda.

Enesekontroll (1 küsimus)

Veel lugemist

Ise saate arve erinevate alustega süsteemidesse konverteerida näiteks siin või siin.

Arvusüsteemidest (ja paljust muust) on juttu “Matemaatika õhtuõpikus”, mille saab ka alla laadida.

Litsents

Icon for the Creative Commons Attribution 4.0 International License

Programmeerimine on loodud Eno Tõnisson, Tauno Palts, Merilin Säde, Kaarel Tõnisson jt poolt Creative Commons Attribution 4.0 International License litsentsi alusel, kui pole teisiti märgitud.

Jaga seda raamatut