4.4.1 Liukulukujen esitys

Liukuluvuilla (floating point number) pystytään esittämään muitakin kuin vain kokonaislukuja, siis lukuja joissa on desimaaliosa. Käytössä on samanlainen paikkajärjestelmä kuin kokonaisluvuillakin, erona on vain että kantaluvun eksponentit ovat desimaaliosassa negatiivisia:

2.374 = 2*1 + 3*0.1 + 7*0.01 + 4*0.001
= 2*100 + 3*10-1 + 7*10-2 + 4*10-3

(Negatiivisen eksponentin periaatehan on: 10-1 = 1/10, 10-2 = 1/102, jne.)

Tarkastellaan ensin 10-järjestelmän liukulukuja. Luku muunnetaan ensin ns. eksponenttimuotoon, jossa desimaalipisteen vasemmalla puolella on nolla ja oikealla puolella jokin nollasta eroava numero. Esimerkkejä:

123.321 = 0.123321*1000 = 0.123321*103
0.0067489 = 0.67489*0.01 = 0.67489*10-2

Luku koostuu siis desimaaliosasta eli mantissasta (edellisissä esimerkeissä 123321 ja 67489) ja kerroinosasta, jossa on kantaluku (10) korotettuna eksponentin (esimerkeissä 3 ja -2) osoittamaan potenssiin. Mantissa sisältää esitettävän luvun merkitsevät numerot ja eksponentti kertoo luvun suuruusluokan.

Tietokoneessa liukuluvut esitetään luonnollisesti 2-järjestelmässä. Periaate on sama kuin edellä, mutta nyt vain kantalukuna on 2, ja sekä mantissa että eksponentti esitetään 2-järjestelmän lukuina. Esimerkkejä:

11102 = 0.11102 *24
mantissa= 11102 , eksponentti= 410 = 1002

10.1012 = 0.101012 *22
mantissa= 101012 , eksponentti= 210 = 102

0.0001110112 = 0.1110112 *2-3
mantissa= 1110112 , eksponentti= -310 = -112

Tämä vastaa liukuluvun esitystä tietokoneessa. Luvusta tallennetaan mantissa ja eksponentti (molemmat 2-järjestelmän lukuina). Kantalukua ei tallennetta, koska se on aina 2 (siis ei 10). Lisäksi tarvitaan tieto siitä, onko luku positiivinen vai negatiivinen. Liukuluvun esitys sisältää siten kolme osaa:

etumerkki

eksponentti

mantissa

Etumerkille varataan yksi bitti. Jos etumerkkibitti on 0, on luku positiivinen, ja jos se on 1, on luku negatiivinen. Eksponentille varataan esimerkiksi 8 bittiä ja mantissalle esimerkiksi 23 bittiä.

Käytännössä siis liukuluvut esitetään aina normeerattuina. Tämä tarkoittaa sitä, että eksponentti valitaan siten, että mantissa sijoittuu välille 0.5...1 (kun kantaluku on 2, on tämä aina mahdollista). Koska mantissan ensimmäinen bitti on tällöin aina 1, sitä ei usein tallenneta lainkaan, ja näin voidaan lisätä mantissan tarkkuutta vielä yhdellä bitillä.

Eksponentti (joka on siis aina kokonaisluku) voi olla joko negatiivinen tai positiivinen. Käytännössä liukulukuja tallennettaessa eksponenttiin lisätään sopiva vakio siten, että saatu luku on aina ei-negatiivinen. Tällöin eksponentti voidaan aina tallentaa positiivisena kokonaislukuna (suoralla esityksellä). Esimerkiksi neljän bitin eksponentilla voitaisiin esittää kakkosen potenssit väliltä -8...+7. Lisätään tähän 8, jolloin eksponenttiosaan tallennetaankin kokonaisluku väliltä 0...15.