Heksadesimaaliluvuista
Jokapäiväisessä elämässä käytetään lukujen esittämisessä yleensä kymmenjärjestelmää. Kantalukuna käytetään kymmentä luultavasti siksi, että ihmisellä on kymmenjärjestelmään sopiva määrä sormia. Kymmenjärjestelmään tarvitaan kymmenen numeromerkkiä, käytännössä siis 0..9. Kantaluku ja sitä suuremmat luvut esitetään kantaluvun potenssien kertoimina:
1234 = 1*10 3 + 2 ⋅ 10 2 + 3 ⋅ 10 1 + 4 ⋅ 10 0
Väylätekniikoiden yhteydessä, kuten digitaalitekniikassa yleensäkin, käytetään kymmenjärjestelmän sijaan usein binaari- tai heksadesimaalijärjestelmää. Binaarijärjestelmän kantaluku on kaksi. Se on luonteva valinta digitaalitekniikkaan, joka perustuu Boolen algebraan (arvot tosi ja epätosi). Ihmiselle binaarilukujen lukeminen ja kirjoittaminen on hankalaa, sillä ne ovat usein pitkiä ykkös-nolla -jonoja. Kätevä vaihtoehto ovat lukujärjestelmät, joiden kantaluku on kakkosen jokin potenssi. Tällöin jokainen merkki vastaa tiettyä bittikuviota. Käytetyin näistä on heksadesimaalijärjestelmä (kantaluku kuusitoista), jolloin jokainen numeromerkki vastaa neljän bitin jonoa:
1234 16 = 1 ⋅ 16 3 + 2 ⋅ 16 2 + 3 ⋅ 16 1 + 4 ⋅ 16 0 = 0001001000110100 2 = 4660
1 16 = 0001 2
2 16 = 0010 2
3 16 = 0011 2
4 16 = 0100 2
Samannäköinen merkintä voi siis tarkoittaa eri lukua eri lukujärjestelmissä. Matematiikassa lukujärjestelmän kantaluku merkitään sekaannusten välttämiseksi alaindeksiin (kymmenjärjestelmän lukuna). Ilman alaindeksiä olevat luvut oletetaan kymmenjärjestelmän luvuiksi. Digitaalitekniikassa heksadesimaalilukujen eteen merkitään yleensä 0x. Tätä merkintätapaa käytetään myös tässä tekstissä. Joskus luvun edellä käytetään merkkiä $ tai luvun perässä kirjainta h. Myös näiden yhdistelmiä näkee.
12 16 = 0 x12 = 0 x12h = $12 = $12h = 18
Koska heksadesimaalijärjestelmään tarvitaan kuusitoista numeromerkkiä, otetaan avuksi kirjaimet A..F, jotka vastaavat kymmenjärjestelmän lukuja 10..15. Muunnoksia lukujärjestelmien välillä voi tehdä vaikkapa Windowsin laskimella. Pienet luvut on hyvä osata muuntaa myös päässä, sillä se on usein nopeinta. Esim. 1. Muunna 0x2B kymmenjärjestelmän luvuksi.
2 ⋅ 16 + 11 = 32 + 11 = 43
Esim. 2. Muunna 45 heksadesimaaliluvuksi.
45
= 2 , jää 13 ( = 0xD )
16
45 = 0 x2 D
Heksadesimaalilukujen yhteenlaskussa täytyy muistaa, että yhdellä merkillä esitetään
luvut 0..15. Muistinumeroa tarvitaan siis vasta, kun 16 tulee täyteen:
1
0x600 0x105 0x19A
+0x A +0x206 +0x108
-------------------------------------------------
0x60A 0x30B 0x1A2
Muunnokset lukujärjestelmästä toiseen
Manuaalisesti muunnokset 10 -> 2 ja 2 -> 10
10 - järjestelmästä 2 - järjestelmään
1204 = 1024 + 128 + 32 + 16 + 4
= 1*1024 + 0*512 + 0*256 + 1*128 + 0*64 + 1*32 + 1*16 + 0*8 + 1*4 + 0*2 + 0*1
= 1*2^10 + 0*2^9 + 0*2^8 + 1*2^7 + 0*2^6 + 1*2^5 + 1*2^4 + 0*2^3 + 1*2^2 + 0*2^1 + 0*2^0
= 1 0 0 1 0 1 1 0 1 0 0 (bin)
= 10010110100 (bin)
2 - järjestelmästä 10 - järjestelmään
1001011 (bin) = 1*2^6 + 0*2^5 + 0*2^4 + 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0
= 1*64 + 0*32 + 0*16 + 1*8 + 0*4 + 1*2 + 1*1
= 64 + 0 + 0 + 8 + 0 + 2 + 1
= 75
2 - järjestelmästä 16- järjestelmään (binaarista heksajärjestelmään)
1011 1111 0101 1110
B F 5 E
= 0xBF5E