Luku 5

Perusteet-kurssin kertaus

Tässä osiossa kerrataan hieman Tietokoneen toiminnan perusteet -kurssilla opittuja asioita. Jokainen kertausosion tehtävistä on sellainen, että voit yrittää vastaamista niin monta kertaa kuin tarvitset, kunnes vastaus on oikein. Jos tehtävässä on useampi vastauskenttä, on jokaiseen annettava vastaus ennen kuin voi painaa Vastaa-nappia. Näet tehtävästä saadut osapisteet myös osittain oikeista vastauksista, mutta vasta kokonaan vastattuasi näet mitkä olivat oikein. Kun olet saanut hankittua vähintään 20 pistettä tehtävistä, saat sähköpostiisi ilmoittautumislinkin Tietokoneen toiminnan jatkokurssille. Ilmoittauduttuasi pääset kurssin Moodle-oppimisympäristöön, jossa on tiedot kurssin muista tehtävistä ja kokeesta.

Binääri- ja heksadesimaaliluvut

Binäärilukujen ja heksadesimaalilukujen perusteiden konkreettinen osaaminen mahdollistaa niiden hyödyntämisen muun muassa algoritmien suunnittelussa ja ohjelmoinnissa, rinnakkaisohjelmoinnissa, kryptografiassa ja tietoliikenteessä. Erilaiset kantalukujärjestelmät eivät siis kuulu pelkästään tietojenkäsittelytieteilijän ja ohjelmoijan yleissivistykseen, vaan lisäksi niiden ymmärtäminen on välttämätöntä useiden alan menetelmien oppimiseksi ja soveltamiseksi. Verkosta löytyvien muuntimien tai vaikkapa Pythonin käyttö lukujärjestelmämuunnoksiin harjoitellessasi ei edistä oppimistasi. Sen sijaan oppimistasi edistää, kun teet kaikki tehtävissä pyydetyt muunnokset käsin kynällä ruutupaperille ennen vastaamista. Kannattaa myös harjoitella niitä tarvittaessa vapaaehtoisesti enemmänkin.

Lisätietoja lukujärjestelmistä löydät Tietokoneen toiminnan perusteet -kurssilta ja asiaa käsittelevästä lisämateriaalista.

Kymmenjärjestelmä ja binäärijärjestelmä

Kymmenjärjestelmän luvut ovat 10-kantaisia lukuja ja binääriluvut 2-kantaisia lukuja. Heksadesimaaliluvut puolestaan ovat 16-kantaisia lukuja. Kymmenjärjestelmässä numeron paikka ilmaisee, montako mitäkin kymmenen potenssia (ykköset, kymmenet, sadat jne.) tarvitaan luvun ilmaisemiseen. Esimerkiksi

2735 = 2⋅1000 + 7⋅100 + 3⋅10 + 5⋅1

Binäärijärjestelmässä eli 2-kantajärjestelmässä vastaavasti numeron paikka ilmaisee, montako mitäkin kahden potenssia (ykköset, kakkoset, neljät, kahdeksat jne.) tarvitaan luvun ilmaisemiseen. Esimerkiksi

0b1001 = 1⋅8 + 0⋅4 + 0⋅2 + 1⋅1 = 9

Useissa ohjelmointikielissä on mahdollisuus ilmaista kokonaisluku binäärilukuna tai heksadesimaalilukuna. Muun muassa Pythonissa, Javassa, Javascriptissä, C:ssä ja C++:ssa käytetään etuliitettä 0b binäärilukujen ilmaisuun ja etuliitettä 0x heksadesimaalilukujen ilmaisuun. Esimerkiksi Pythonissa käyttäisit sitä näin:

luku = 0b1001

Muuttujan luku arvo on tällöin sama kuin jos kirjoittaisit näin:

luku = 9

Heksadesimaalijärjestelmä

Binääriluvuissa on vain kaksi eri numeroa, joten niillä ilmaistut luvut ovat pitkiä. Siksi lukuja ilmaistaan usein heksadesimaalilukuina binäärilukujen sijaan. Heksadesimaalijärjestelmässä eli 16-kantajärjestelmässä puolestaan numeron paikka ilmaisee, montako mitäkin luvun 16 potenssia (ykköset, kuudettoista, kuudettoista, kaksisataaviisikymmentäkuudet jne.) tarvitaan luvun ilmaisemiseen.

Koska 16-kantaisessa järjestelmässä tarvitaan 16 numeroa, on käytössä kirjaimet A – F kuvaamaan ”numeroita” 10 – 15. Niinpä numerot nollasta yhdeksään ovat samat, mutta: 10 = A, 11 = B, 12 = C, 13 = D, 14 = E ja 15 = F.

Esimerkiksi heksadesimaaliluku 0x1AB muunnetaan kymmenjärjestelmään seuraavasti:

0x1AB = 1⋅256 + A⋅16 + B⋅1 = 1⋅256 + 10⋅16 + 11 = 256 + 160 + 11 = 427

Potenssimerkinnöin ilmaisten:

0x1AB = 1⋅162 + 10⋅161 + 11⋅160 =256 + 160 + 11 = 427

Esimerkiksi Pythonissa voit antaa muuttujalle kokonaislukuarvon heksadesimaalimuodossa näin:

luku = 0x1AB

Muuttujan luku arvo on tällöin sama kuin jos kirjoittaisit näin:

luku = 427

Heksadesimaalilukujen ja binäärilukujen väliset muunnokset ovat suoraviivaisia. Kukin heksadesimaalinumero voidaan ilmaista neljällä bitillä eli binääriluvuilla 0b0000 - 0b1111. Esimerkiksi 0b0000 = 0x0 ja 0b1111 = 0xF.

Esimerkki: Luvun 0xCAFE muuntaminen binääriluvuksi

  • 0xC = 12 = 0b1100
  • 0xA = 10 = 0b1010
  • 0xF = 15 = 0b1111
  • 0xE = 14 = 0b1110

Niinpä 0xCAFE = 0b 1100 1010 1111 1110.

Pääsit aliluvun loppuun! Jatka tästä seuraavaan osaan:

Muistathan tarkistaa pistetilanteesi materiaalin oikeassa alareunassa olevasta pallosta!