Johdatus ohjelmointiin - lukujärjestelmistä
Lukujärjestelmistä
(c) Tommi Lahtonen 29.1.1998. Muiden kuin matemaatikkojen haukkuja voi lähettää osoitteeseen
tommi.j.lahtonen@jyu.fi
10-järjestelmä
Esimerkki:
| 102 |
101 |
100 |
| 100 |
10 |
1 |
| 2 |
2 |
1 |
| 22110 |
= |
2 sataa |
+ |
2 kymmentä |
+ |
1 ykköstä |
| |
= |
2 * 100 |
+ |
2 * 10 |
+ |
1 * 1 |
| |
= |
2 * 102 |
+ |
2 * 101 |
+ |
1 * 100 |
Vastaavaan tyyliin tulkitaan muutkin lukujärjestelmät. Kantalukuna voi olla mikä tahansa kokonaisluku,
joka on suurempi kuin 1.
2-järjestelmä
2-järjestelmässä eli binäärijärjestelmässä kantalukuna on 2 (vrt. 10 edellisessä kappaleessa).
Käytössä on siis vain kaksi lukua numeroiden ilmaisemiseen eli 0 ja 1 (10-järjestelmässä 0,1,2,3,4,5,6,7,8,9)
2-järjestelmässä olevan luvun muuntaminen 10-järjestelmään:
|
|
27 |
|
26 |
|
25 |
|
24 |
|
23 |
|
22 |
|
21 |
|
20 |
|
|
128 |
|
64 |
|
32 |
|
16 |
|
8 |
|
4 |
|
2 |
|
1 |
|
|
1 |
|
1 |
|
1 |
|
0 |
|
1 |
|
1 |
|
1 |
|
0 |
| 111011102 |
= |
1 * 27 |
+ |
1 * 26 |
+ |
1 * 25 |
+ |
0 * 24 |
+ |
1 * 23 |
+ |
1 * 22 |
+ |
1 * 21 |
+ |
0 * 20 |
|
= |
128 |
+ |
64 |
+ |
32 |
+ |
0 |
+ |
8 |
+ |
4 |
+ |
2 |
+ |
0 |
|
= |
238 |
10-järjestelmässä olevan luvun muuttaminen 2-järjestelmään:
| Otetaan suurin 2 potenssi joka mahtuu muunnettavaan lukuun |
| 18710 |
|
|
187 - 27 |
= |
187 - 128 |
= |
59 |
-> vasemmanpuoleisin bitti on 1 |
| Jatketaan jäljelle jäävällä osalla eli 59 |
| |
59 - 26 |
= |
59 - 64 |
-> menee negatiiviseksi -> seuraavaksi bitiksi 0 |
| Yritetään yhtä pienemmällä kakkosen potenssilla |
| |
59 - 25 |
= |
59 - 32 |
= |
27 |
-> mahtui -> seuraavaksi bitiksi 1 |
| Jatketaan jäljelle jäävällä osalla eli 27 |
| |
27 - 24 |
= |
27 - 16 |
= |
11 |
-> mahtui -> seuraavaksi bitiksi 1 |
| Jatketaan jäljelle jäävällä osalla eli 11 |
| |
11 - 23 |
= |
11 - 8 |
= |
3 |
-> mahtui -> seuraavaksi bitiksi 1 |
| Jatketaan jäljelle jäävällä osalla eli 1 |
| |
3 - 22 |
= |
3 - 4 |
= |
-1 |
-> ei mahdu -> seuraavaksi bitiksi 0 |
| Yritetään yhtä pienemmällä kakkosen potenssilla |
| |
3 - 21 |
= |
3 - 2 |
= |
1 |
-> mahtui -> seuraavaksi bitiksi 1 |
| Yritetään yhtä pienemmällä kakkosen potenssilla |
| |
1 - 20 |
= |
1 - 1 |
= |
0 |
-> mahtui -> seuraavaksi bitiksi 1 |
0 saavutettu -> muunnos on valmis. Lopputulokseksi saamme:
18710 = 101110112
8-järjestelmä (oktaalijärjestelmä)
8-järjestelmässä eli oktaalijärjestelmässä kantalukuna on 8 (vrt. 2 edellisessä kappaleessa).
Käytössä on siis kahdeksan lukua numeroiden ilmaisemiseen eli 0,1,2,3,4,5,6,7 (10-järjestelmässä 0,1,2,3,4,5,6,7,8,9)
Binääriluvun muuttaminen oktaaliluvuksi:
| Jaetaan binääriluku oikeasta reunasta lukien kolmen numeron ryhmiin
(23 = 8 -> maksimi mitä yhdellä oktaalinumerolla voidaan esittää).
|
| 101011112 |
= |
10 |
101 |
111 |
| Muutetaan jokainen numeroryhmä vastaavaksi 10-järjestelmän luvuksi |
|
= |
10 |
101 |
111 |
|
= |
1*21+0*20 |
1*22+0*21+1*20 |
1*22+1*21+1*20 |
|
= |
2+0 |
4+0+1 |
4+2+1 |
|
= |
2 |
5 |
7 |
saadut numerot ovat valmiita oktaalilukuja jotka vain yhdistetään yhdeksi numeroksi
eli saamme tulokseksi 2578
Oktaaliluvun muuttaminen binääriluvuksi
Otetaan oktaaliluvun jokainen numero erikseen ja muutetaan vastaavaksi
binääriluvuksi aivan samoin kuin 10-järjestelmän luvut. Binääriluvut kolmen
bitin ryhmissä
(23 = 8 -> maksimi mitä yhdellä oktaalinumerolla voidaan esittää).
| 1238 |
= |
1 |
2 |
3 |
|
= |
0*22 |
0*21 |
1*20 |
0*22 |
1*21 |
0*20 |
0*22 |
1*21 |
1*20 |
|
= |
001 |
010 |
011 |
Yhdistetään saadut binääriluvut yhdeksi luvuksi niin saadaan
001010011 ja alkunollat voidaan jättää pois
eli lyhyemmin 1010011
16-järjestelmä (heksajärjestelmä)
16-järjestelmässä eli heksajärjestelmässä kantalukuna on 16 (vrt. 8 edellisessä kappaleessa).
Käytössä on siis 16 lukua numeroiden ilmaisemiseen eli 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f (10-järjestelmässä 0,1,2,3,4,5,6,7,8,9)
Binääriluvun muuttaminen heksaluvuksi
| Jaetaan binääriluku oikeasta reunasta lukien neljän numeron ryhmiin |
| 101110012 |
= |
1011 |
1001 |
| Muutetaan jokainen numeroryhmä vastaavaksi 16-järjestelmän luvuksi |
|
= |
1011 |
1001 |
|
= |
1*23+0*22+1*21+1*20 |
1*23+0*22+0*21+1*20 |
|
= |
8+0+2+1 |
8+0+0+1 |
|
= |
1110 = b16 |
910 = 916 |
Yhdistetään tulokseksi saadut heksaluvut yhdeksi luvuksi eli
b9
Heksaluvun muuttaminen binääriluvuksi
Otetaan heksaluvun jokainen numero erikseen ja muutetaan vastaavaksi
binääriluvuksi aivan samoin kuin 10-järjestelmän luvut. Binääriluvut neljän
bitin ryhmissä.
(24 = 16 -> maksimi mitä yhdellä heksanumerolla voidaan esittää).
| be16 |
= |
b16 |
e16 |
|
= |
1110 |
1410 |
|
= |
1*23 |
0*22 |
1*21 |
1*20 |
1*23 |
1*22 |
1*21 |
0*20 |
|
= |
10112 |
11102 |
Yhdistetään saadut binääriluvut ja saadaan 10111110
Muunnostaulukko
| kantaluku
|
| 10 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
| 2 |
0000 |
0001 |
0010 |
0011 |
0100 |
0101 |
0110 |
0111 |
1000 |
1001 |
1010 |
1011 |
1100 |
1101 |
1110 |
1111 |
| 8 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
| 16 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
a |
b |
c |
d |
e |
f |