Kahdeksanlukujärjestelmä on asemainen lukujärjestelmä, jonka emä (perusta) on 8. Siinä käytetään kahdeksaa merkkiä: 0–7. Jokaisen paikan arvo määräytyy luvun paikasta kertomalla kyseinen numero luvun 8:n potenssilla (esim. oikeanpuoleisin paikka on 8^0, seuraava 8^1, sitten 8^2 jne.). Kahdeksanluvut kirjoitetaan eri tavoilla: toisinaan käytetään etuliitettä o (esim. o04 tai o1242), joskus kirjoitetaan ylä- tai alaindeksinä pohjaluku, kuten 12428, ja joissain ohjelmointikielissä käytetään etuliitettä 0o (esim. 0o1242). Historiallisesti myös johtava nolla (esim. 0755) merkitsi oktaalia tietyissä kielissä.

Muuntaaminen ja esimerkit

Oktaaliluvun muuntaminen desimaaliluvuksi: kerro jokainen numero sen paikan 8:n potenssilla ja summkaa. Esimerkiksi 12428 = 1·8^3 + 2·8^2 + 4·8^1 + 2·8^0 = 1·512 + 2·64 + 4·8 + 2·1 = 512 + 128 + 32 + 2 = 674 (desimaalina).

Desimaalin muuntaminen oktaaliksi onnistuu jakamalla luku toistuvasti kahdeksalla ja lukemalla jäännökset takaperin. Esimerkiksi 83 desimaalia: 83 ÷ 8 = 10 jäännös 3, 10 ÷ 8 = 1 jäännös 2, 1 ÷ 8 = 0 jäännös 1 → 83 = 1238.

Binäärin ja oktaalin välillä muuntaminen on helppoa, koska 1 oktaalinen numero vastaa täsmälleen 3 binääribitistä (8 = 2^3). Ryhmittele binaariluvun bitit oikealta kolmen ryhmiin ja korvaa kukin ryhmä yhdellä oktaalimerkillä. Esim. 110101102 → 110 101 110 → 6 5 6 → 6568.

Oktaaliaritmetiikka poikkeaa desimaalista siten, että "käytettävissä" on vain numerot 0–7; yhteenlaskussa ja kertolaskussa siirrot tapahtuvat aina kun summa tai tulo saavuttaa 8 tai enemmän. Esimerkki yhteenlaskusta suoraan oktaalimuodossa: 578 + 368 = (5·8+7) + (3·8+6) = 47 + 30 = 77 desimaalina = 1158. Oktaalissa laskeminen tekee käteväksi myös binaariotason ryhmittelyn (kolmen bitin ryhmät).

Käytännön sovelluksia ja historia

Oktaalijärjestelmää käytettiin laajasti tietotekniikassa etenkin aikaisemmissa koneissa ja käyttöjärjestelmissä. Koska yksi oktaalinen numero vastaa kolmea bittiä, se oli kätevä tapa esittää binääridataa ennen kuin tavallinen muistiyksikkö (bitti | tavu) vakiintui 8-bittiseksi. Esimerkiksi jotkut vanhat tietokonearkkitehtuurit (kuten PDP-perheen koneet) ja niiden ohjelmointityökalut käyttivät oktaalia luontevasti.

Monissa nykyisissä käyttöjärjestelmä- ja ohjelmointikäytännöissä oktaalia näkyy edelleen: Unix-tyyppisissä järjestelmissä tiedostojen käyttöoikeudet ilmoitetaan usein oktaalilukuna (esim. chmod 755), ja joidenkin ohjelmointikielien merkkijono- ja numeerisissa esitysmuodoissa on yhä oktaalimuotoisia escape-jonoja (esimerkiksi C:n \nnn -oktaaliescapet). Lisäksi aiemmin C-kielessä johtavalla nollalla merkityt numerot tulkittiin oktaaliksi, mikä on aiheuttanut epätoivottuja virheitä — tästä syystä moderneissa kielissä suositaan selkeämpiä etuliitteitä kuten 0o.

Oktaalia käytetään myös kulttuurisissa ja kielellisissä yhteyksissä. Jotkin ryhmät, esimerkiksi alkuperäisamerikkalaiset, jotka käyttävät Yukin kieltä Kaliforniassa, sekä pamean-kielet Meksikossa, käyttävät oktaalista lukujärjestelmää. Heille oktaali on perinteisesti syntynyt laskutavasta, jossa lasketaan sormien välisiä välejä eikä itse sormia — tällöin yhdellä kädellä on luonnollisesti kahdeksan laskemisen yksikköä, ja tästä juontuu base-8 -tapainen järjestelmä.

Heksadesimaali (emäs 16) syrjäytti oktaalin monissa tietokonekäytännöissä, kun järjestelmät vakioituivat 8-bittisiksi tavuiksi, koska heksadesimaalissa yksi merkki vastaa 4 bittiä ja kaksi heksamerkkiä muodostaa yhden tavun. Tämä teki heksasta usein kätevämmän luvun esittämistavan 8-, 16-, 32- ja 64-bittisissä kontekstissa.

Yhteenveto

Oktaalijärjestelmä on emältään 8 oleva positoivinen lukujärjestelmä, joka käyttää numeroita 0–7. Se on historiallisesti tärkeä tietokoneiden varhaisvaiheissa ja säilyy käytössä joissain spesifeissä sovelluksissa, kuten Unix-käyttöoikeuksissa ja vanhoissa konearkkitehtuureissa. Sen muuntaminen binäärin ja desimaalin välillä on suoraviivaista (kolmen bitin ryhmät binääristä ja toistuvat jakovirrat desimaalista), ja oktaalilla on myös kulttuurisia käyttötapauksia tietyissä kielissä ja yhteisöissä.