Oppaat

Ohjelmoijan binaarialgebra ja heksaluvut
Paavo Räisänen
Tätä opasta saa vapaasti kopioida, tulostaa ja levittää ei kaupallisissa tarkoituksissa. Kuitenkaan omille nettisivuille opasta ei saa liittää. Opetustarkoituksessa materiaali on vapaasti käytettävissä. Verkko-opetuksessa oppaan saa julkaista oppilaille tarkoitetuilla sivuilla.
1. Binaarijärjestelmä eli 2-järjestelmä
1.1 Positiiviset binaariluvut
Binaarijärjestelmä (voidaan ilmaista myös binäärijärjestelmä) on lukujärjestelmä, jonka kantaluku on 2, tosin sanoen numeron paikka kertoo mistä kakkosen potenssista on kysymys.
Vrt. 10-järjestelmä (desimaaliluvut), jossa numeron paikka kertoo, missä 10 potenssin kohdassa numero lukua on. 8 bittinen binaariluku voi olla esim. muotoa 10110010. Binaariluku muodostuu aina vain ykkösistä ja nollista. Tietokoneen prosessori ymmärtää lopulta vain binaarilukuja, joten binaarilukuja käytetään paljon erityisesti koneenläheisessä ohjelmoinnissa. Binääriluvutkin ovat lopulta vain merkintä osoittamassa sähkövarauksia. Itse tietokone ei käsittele numeroita vaan bitti tarkoittaa sähkövarausta, joka joko on varattu, eli 1, tai sähkövarausta ei ole, eli 0. Esimerkiksi tavussa, jossa on 8 bittiä, on 8 sähkövarausta, jotka voivat olla joko varattuja, tai varaamattomia.
Huomioitavaa on, että 8:lla bitillä (yksi tavu) voidaan ilmaista luvut 0 – 255, eli sillä voidaan osoittaa korkeintaan 256:een eri osoitteeseen.
Binaariluku saa painoarvot kahden potensseina oikealta vasemmalle, eli muodostuu lukujoukko:
1=20, 2=21, 4=22, 8=23, 16=24, 32=25, 64=26, 128=27, 256=28, 512=29 ,1024=210, 2048=211...jne.
2:n potenssi Painoarvot
0 1
1 2
2 4
3 8
4 16
5 32
6 64
7 128
8 256
9 512
10 1024
11 2048
12 4096
13 8192
14 16 384
15 32 768
16 65 536
Esimerkki. 1.1.1 Muunnetaan luku binaariluku 10011011 desimaaliluvuksi (kymmenjärjestelmän luvuksi).
Luetaan oikealta vasemmalle. Ykkosiä on yksi, samoin kakkosia, nelosia on nolla jne. eli alekkain lueteltuna:

[b] 1 : 27 *1 =128
0 : 26 *0 =0
0 : 25 *0 =0
1 : 24 *1 =16
1 : 23 *1 =8
0 : 22 *0 =0
1 : 21*1 =2
1 : 20 *1 =1
[/b]
Lasketaan yhteen 1+2+0+8+16+0+0+128 = 155
Luku 10011011 on siis desimaalilukuna 155.
Esimerkki 1.1.2: Muunnetaan luku 1612 binaariluvuksi.
Desimaaliluku muutetaan binaariluvuksi sen painoarvojen, eli kahden potenssien apuna käyttäen seuraavasti:
1612
-1024
= 588
eli 2:n potensseja 10 on 1.
588
-512
= 76
eli 2:n potensseja 9 on 1. Jatketaan:
76
-256
menisi miinuksen puolelle, eli 2:n potensseja 8=0. Jatketaan:
76
-128
menisi miinuksen puolelle, eli 2:n potensseja 7=0.
76
-64
=12
2:n potensseja 6 on 1.
12
-32
miinuksen puolelle 2:n potensseja 5 on 0.
12
-16
miinuksen puolelle 2:n potensseja 4 on 0.
12
- 8
4
2:n potensseja 3 on 1.
4
- 4
0
eli 2:n potensseja 2 on 1,
asku meni tasan, joten seuraavat kahden potenssit 1 (painoarvo 2) ja 0 (painoarvo 1=) ovat nollia.
Luku 1612 binäärilukuna on siis 11001001100.
Helpoiten binaari- , heksa- ja desimaalilukuja (eli kymmenjärjestelmän lukuja) muuntaa laskimen avulla, mutta joskus voi olla tarpeen osata muuntaa niitä myös paperilla laskemalla. Binaari- ja heksalukujen toimintaperiaate täytyisi jokaisen vähän pidemmälle ehtineen ohjelmoijan osata.
Positiivisia binaarilukuja käsiteltäessä edessä olevia nollia ei tarvitse merkitä.
Bitti ( b , esim. Mb megabittiä) on yksi nolla tai ykkönen, ja tavu (B, esim. MB megatavu, englanniksi byte, käytetään Suomessa myös merkintää t, eli esim. kt tai Mt) on 8 bittiä.
Binaariluvun perässä käytetään kirjoittaessa kirjainta B osoittamassa, että kyse on binaariluvussa. Siten merkinnät 100 (desimaaliluku) ja 100B (binaariluku) ovat eri asia.
Tietokonetekniikassa etuliitteet kilo, mega, giga, tera viittaavat tavujen määrään. Tietokoneteknikassa 1 kt (kilotavu, kB, tai kt) on 210 eli 1024 B. Vastaavasti:

MB tai Mt= 1020 tavua, eli 1048576 tavua (tuhat kilotavua).
GB tai Gt = 1030 tavua, eli miljoona kilotavua.
TB tai Tt= 1040 tavua, eli miljardi kilotavua.
Modeemien ja verkkokorttien nopeudet ilmoitetaan yleensä bitteinä sekunnissa (kb/s tai Mb/s).
Bittijonoja käsiteltäessä luvun oikeanpuoleisinta bittiä kutsutaan vähiten merkitseväksi bitiksi, eli lyhenteellä LSB. Vastaavasti vasemmanpuoleisinta bittiä kutsutaan lyhenteellä MSB, eniten merkitsevä bitti. Pitkiä bittijonoja käsiteltäessä bitit ryhmitellään oikealta alkaen neljän ryhmiin.
Esim. 10 1101 1001 0011 Binaariluvun voi kertoa kahdella lisäämällä oikealle (LSB päähän) nollan.