5. Laskutoimitukset eri lukujärjestelmissä Lukujen esitykset eri lukujärjestelmissä Muunnokset lukujärjestelmien välillä Laskutoimitukset eri lukujärjestelmissä. 5.1. Muunnokset lukujärjestelmien välillä Jakoalgoritmi: Kun a ja b ovat kokonaislukuja ja b > 0, niin on olemassa sellaiset yksikäsitteiset kokonaisluvut r ja q, että a = qb + r, missä 0 r < b Jakoalgoritmia käytetään luvun koodauksessa eri kantalukujen avulla.
Luku 10-järjestelmässä Tavallisesti käytetään 10-järjestelmän lukuja (10-kantaisia lukuja). Luku a esitetään jonona r n r n 1...r 2 r 1 r 0, missä r 0 ilmoittaa ykköset, r 1 kymmenet, r 2 sadat, jne. Tarvittaessa merkitään: (r n r n 1...r 2 r 1 r 0 ) 10. 10-kantainen luku voidaan esittää myös summana: a = r n r n 1... r 2 r 1 r 0 = r n 10 n + r n 1 10 n 1 + + r 2 10 2 + r 1 10 1 + r 0 10 0 = (r n 10 n 1 + r n 1 10 n 2 + + r 2 10 + r 1 )10 + r 0 = q 0 10 + r 0 Luvun a numero r 0 saadaan jakoalgoritmin mukaisesti jakamalla a 10:llä ja poimimalla jakojäännös r 0 ykkösten esittäjäksi. r 1 löydetään samoin jakoalgoritmilla soveltamalla algoritmia lukuun r n r n 1...r 2 r 1 = q 0 jolloin saadaan q 0 = r n r n 1... r 2 r 1 = r n 10 n 1 + r n 1 10 n 2 + + r 2 10 + r 1 = (r n 10 n 2 + + r 2 )10 + r 1 = q 1 10 + r 1
Jatkamalla jakamista ja poimintaa, huomataan q i = (r n 10 n (i+2) + + r i+2 )10 + r i+1 = q i+1 10 + r i 1, kun i = 0, 1, 2,..., n 2. Muut lukujärjestelmät Edelläkuvattua jakoalgoritmia voidaan käyttää myös k-kantaisten lukujen laskentaan (k kokonaisluku, k > 0). Kun a on 10-järjestelmän luku, niin sama luku k-kantaisena (huom! k on 10-järjestelmän luku) (d s d s 1... d 2 d 1 d 0 ) k tai lyhyesti d s d s 1... d 2 d 1 d 0 k a = d s k s + d s 1 k s 1 + + d 2 k 2 + d 1 k 1 + d 0 k 0 = (d s k s 1 + d s 1 k s 2 + + d 2 k + d 1 )k + d 0 = q 0 k + d 0
Vastaavasti kuin 10-järjestelmän tapauksessa k-järjestelmän luvun numerot d i saadaan jakoalgoritmin jakojäännöksistä kuten edellä 10-järjestelmän tapauksessa. Esimerkki 5.1. Luku 54321 7 = (5 7 4 + 4 7 3 + 3 7 2 + 2 7 1 + 1) 10 = 13539 10. k>10 Koska k-järjestelmän luvun numerot saadaan jakoalgoritmin jakojäännöksistä, niin mahdollisia numeroita ovat 0, 1, 2,..., k 1. Jos k = 2 (binääriluvut), niin mahdollisia numeroita ovat 0 ja 1 ja binääriluvut koostuvat 0:ien ja 1:en muodostamista jonoista; Jos k = 3 : mahdollisia numeroita ovat 0,1 ja 2;... k = 10 : mahdollisia numeroita ovat 0,1,2,3,4,5,6,7,8 ja 9.
k-järjestelmän numerot jatkoa Kun 11 k 100, niin mukaan tulee (10-järjestelmän (laskut tapahtuvat 10-järjestelmässä)) kaksinumeroisia jakojäännöksiä. Kun k 101 niin jakojäännökset voivat olla kolme tai vielä useampia (10-järjestelmän) numeroita käsittäviä. Luvun merkitsemisen idea numerojonona on, että jokainen numero koostuu yhdestä merkistä ja niinpä, kun jakojäännökset ovat 10, 11, 12,... näille on annettava uudet 1-merkkiset nimet. Tavallisesti merkitään 10 = A, 11 = B, 12 = C,.... k = 12 : mahdollisia numeroita ovat 0,1,2,3,4,5,6,7,8, 9, A ja B. k = 16:mahdollisia numeroita ovat 0,1,2,3,4,5,6,7,8, 9, A, B, C, D, E ja F. Esimerkki 5.2. Esimerkki 5.2. Muunna luku 893 10 a)16- b) 2-järjestelmän luvuksi. Ratk. a) 893 = 55 16 + 13 55 = 3 16 + 7 3 = 0 16 + 3 Koska (13) 10 = D 16, niin 893 10 = (37D) 16 b) Vastaavasti 893 10 = (1101111101) 2
Esimerkki 5.3. Esimerkki 5.3. Muunna luku (AAB) 13 a)10- b) 7-järjestelmän luvuksi. Ratk. a) Luku (AAB) 13 = A13 2 +A13 1 +B13 0 = 10 169+10 13+11 = 1831 = (1831) 10 b)sama luku 7-järjestelmässä on (1831) 10 = d s 7 s + d s 1 7 s 1 + + d 2 7 2 + d 1 7 1 + d 0 7 0 Koska 7 4 = 2401 1831, niin tarvitaan vain potenssit 7 3, 7 2, 7 1 ja7 0, joten (1831) 10 = d 3 7 3 + d 2 7 2 + d 1 7 1 + d 0 1831 = 261, 5714286 = 261 + 4 7 7 d 0 = 4 261 7 = 37, 28571429 = 37 + 2 7 d 1 = 2 37 7 = 5, 2857148286 = 5 + 2 7 d 2 = 2 5 7 = 0 + 5 7 d 3 = 5 (AAB) 13 = (1831) 10 = (5224) 7.
Binääri-, heksa - ja oktaluvut Binääri-, heksa- ja oktaluvut Yleensä muunnokset kahden lukujärjestelmän välillä tehdään 10- järjestelmän kautta. Poikkeus: Heksaluvut eli 16-järjestelmän luvut, oktaluvut eli 8-järjestelmän luvut ja binääriluvut. Koska 16 = 2 4, niin jokaista heksaluvun numeroa vastaa 4 numeroinen binääriluku. Esimerkiksi 7 16 = (0111) 2. Koska 8 = 2 3, niin jokaista oktaluvun numeroa 3 numeroinen binääriluku. Esimerkiksi 7 8 = (111) 2. Silloin muunnokset näiden lukujoukkojen välillä voidaan tehdä suoraan muuntamalla jokainen luvun numero erikseen muuntotaulukoiden avulla. Muuntotaulukot
Esimerkki 5.5. Muunna binääriluku 11111001101010 a)oktaluvuksi b)heksaluvuksi. Ratk.... Esimerkkejä Binäärilukuja käytetään lukujen esittämiseen tietokoneessa. Lukujen esitykset ovat pitkiä, joten okta- ja heksamuotoiset esitykset ovat helpompia käsitellä. Esimerkki 5.6. Muunna a) A7D 16 b)1753 8 binääriluvuksi. Ratk.... Esimerkki 5.7. Muunna oktaluku 176522 8 heksaluvuksi. Ratk....
Yhteenlaskuesimerkki Yhteenlasku eri lukujärjestelmissä tehdään kuten 10-järjestelmässä. Esimerkki 5.8. Laske a)1111 2 + 100010 2 b)8ae 16 + EAE3 16. Ratk.... Lainaaminen vähennyslaskussa Esimerkki 5.9. Olkoot A = 5002 ja B = 3493. Määrää A B. Koulussa opetettiin: 4 9 9 12 \5 \0 \0 2 3 4 9 3 A B = 1 5 0 9 Lainaaminen hankala toteuttaa ohjelmallisesti. Lainausketju voi olla pitkä. Vaatii vähennyslaskun lukujen sisältävien numeroiden edestakaista läpikäymistä. Voidaan tehdä ilman lainaamista. Vähennyslasku ilman lainaamista = Komplementin ottaminen. Komplementin ottamisen lisäksi käytetään yhteenlaskua.
Vähennyslasku ilman lainaamista 10-järjestelmässä Olkoot A ja B kaksi 4- numeroista, positiivisista 10- järjestelmän lukua ja A > B. y = A B = A B + 10000 10000 = A + [ B + 9999 + 1] 10000, missä B = B + 9999 on vähennyslasku ilman lainaamista. Muuntotaulukko B = B + 9999:n on luvun B:n 9 komplementti. Sen numerot voidaan määrätä numero numerolta kiinteän muuntotaulukon (komplementin oton) mukaisesti siten, että B:n numero 0 korvataan 9:llä 1 korvataan 8:lla 2 korvataan 7:llä. 8 korvataan 1:llä 9 korvataan 0:llä otetaan komplementti ja koska lainaamista ei tarvita, vähentäminen joka numeron kohdalla samanlaista.
10:n komplementti Luku B = B + 1 = B + 9999 + 1 = B + 10000 on B:n 10:n komplementti. Koska A B = A + B 10000, niin A + B = A B + 10000. A + B käsittää 4:nä viimeisenä numeronaan erotuksen A B ja 10 000 lisäys aiheuttaa etuykkösen (, jonka 10 000:n vähentäminen poistaa). Jättämällä tämä etuykkönen huomiotta saadaan A B luvusta A + B ilman lainausta. Esimerkki 5.9. (jatkoa) Laske 5002 3493 ilman lainaamista. Ratk. 5002-3493 = 5002-3493 + 10 000-10 000 = 5002+(-3493+9999+1)-10 000 = 5002+(-3493+9999+1)-10 000 = 5002 + (3493 + 1) 10000 = 5002 + 3493 10000 5002 3493 = 5002 + 3493 10000 9999-3493 6506 = 3493 ja 3493 = 3493 + 1 = 6506 + 1 = 6507 5002 + 3493 = 5002 + 6507 = 11509 Ensimmäinen 1 katoaa vähennettäessä 10 000. 5002 3493 = 1509.
Vähennyslasku k-järjestelmässä Lukujärjestelmän kantaluku k. Luvut p - numeroisia (p = numeropaikkojen määrä). Kun A ja B positiivisia ja A > B, y = A B = A + ( B + k p ) k p, missä luku B = B + k p on B:n k-komplementti. Nyt B = B + 1, missä luku B on B:n k 1 komplementti, joka saadaan joko muunnostaulukoilla tai vähentämällä luku B p-numeroisesta luvusta, jonka jokaisella numeropaikalla on numero k 1. Käytännössä B muodostetaan laskemalla aluksi B ja lisäämällä siihen luku 1. Vähennyslasku binääriluvuilla Binäärilukujen vähennyslasku: (A > B, A ja B positiivisia, A :ssa ja B :ssä p = 8 numeropaikkaa): Muodostetaan B:n 1:n komplementti B vaihtamalla B:n numero 0 1:ksi ja B:n numero 1 0:ksi (l. vähennetään B 8- numeroisesta luvusta 11111111). Muodostetaan B laskemalla B + 1(B on B:n 2:n komplementti). Lasketaan A + B. Poistetaan etuykkönen.
Esimerkki 5.10. Suorita vähennyslasku 00010110 2 00001101 2 ilman lainaamista. Ratk. 00001101 = 11110010 ja 00001101 = 00001101 + 1 = 11110011 00010110 + 00001101 = 00010110 + 11110011 = 100001001. A B = 00001001 2 tai lyhyesti 1001 2 Esimerkki 5.11. Laske ilman lainaamista (2101) 4 (1222) 4. Ratk....
Ylivuoto Luvun k p esittäminen vaatii p + 1 merkkiä, joista 1. merkki on 1 ja loput p merkkiä 0:ia. Tapauksessa, missä A ja B ovat positiivisia, A > B, on luku A B:kin positiivinen, joten A B + k p = A + B > k p. ja esittäminen vaatii p + 1 merkkiä, joista ensimmäinen on 1. p + 1:n merkin tarvetta kutsutaan ylivuodoksi (overflow). Kun A > B, niin pyyhkimällä A B :stä ylivuotomerkki pois saadaan erotus. Esityksessä A B = A + B k p vähentäminen k p :llä edustaa juuri ylivuotomerkin poispyyhkimistä. Tapaus A<B Kun A ja B ovat positiivisia ja A < B, on A B < 0 Silloin A B + k p < k p A B:n esittämiseen ei tarvita p + 1:tä merkkiä Ei ylivuotoa Johtopäätös: Kun A + B :ssä on ylivuoto, niin haettu erotus on positiivinen ja erotus saadaan pyyhkimällä ylivuotomerkki pois. Kun A + B :ssä ei ole ylivuotoa on haettu erotus negatiivinen ja erotus saadaan määräämällä A + B :n k:n komplementti (mikä edustaa k p :n vähentämistä A + B :stä) ja sijoittamalla eteen oikea etumerkki. Kun A B, niin A B = A + B k p = (k p (A + B )) = (A + B ) = ((A + B ) + 1)
Esimerkki 5.12 Laske 25 183, kun p = 5, k = 10 (eli käytetään 10- järjestelmän lukuja), Ratk. Koska p = 5, niin 25 = 00025 ja 183 = 00183. 00183 = 99999 00183 = 99816 ja 00183 = 00183 + 1 = 99817. 00025 + 00183 = 00025 + 99817 = 99842 Ei ylivuotoa, joten A B < 0. Luvun 00025 + 00183 9:n komplementti on (00025 + 00183 ) = (99842) = 00157 ja 10:n komplementti (00025 + 00183 ) = 00157 + 1 = 00158. 00025 00183 = (00025 + 00183 ) = 158. Esimerkki 5.13. Laske ilman lainaamista (301) 6 (5001) 6 6-järjestelmässä. Ratk....