7. Laskutoimitukset eri lukujärjestelmissä 1 / 31 Johdanto Lukujen esitykset eri lukujärjestelmissä Muunnokset lukujärjestelmien välillä Laskutoimitukset eri lukujärjestelmissä. 2 / 31 7.1. Muunnokset lukujärjestelmien välillä Jakoalgoritmi: Kunajabovat kokonaislukuja jab > 0, niin on olemassa sellaiset yksikäsitteiset kokonaisluvutr jaq, että a = qb+r, missä0 r < b Jakoalgoritmia käytetään luvun koodauksessa eri kantalukujen avulla. 3 / 31 1
Luku 10-järjestelmässä Tavallisesti käytetään 10-järjestelmän lukuja (10-kantaisia lukuja). Lukuaesitetää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. 4 / 31 Luku 10-järjestelmässä jatkoa 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 Luvunanumeror 0 saadaan jakoalgoritmin mukaisesti jakamallaa10:llä ja poimimalla jakojäännösr 0 ykkösten esittäjäksi. r 1 löydetään samoin jakoalgoritmilla soveltamalla algoritmia lukuunr 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 5 / 31 2
Luku 10-järjestelmässä jatkoa 2 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, kuni = 0,1,2,...,n 2. 6 / 31 Luku k-järjestelmässä Muut lukujärjestelmät Edelläkuvattua jakoalgoritmia voidaan käyttää myösk-kantaisten lukujen laskentaan (k kokonaisluku,k > 0). Kunaon 10-järjestelmän luku, niin sama lukuk-kantaisena (huom!k on 10-järjestelmän luku) on (d s d s 1...d 2 d 1 d 0 ) k missä 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 kuin10-järjestelmän tapauksessak-järjestelmän luvun numerotd i saadaan jakoalgoritmin jakojäännöksistä kuten edellä 10-järjestelmän tapauksessa. 7 / 31 3
Esimerkki 7.1. Luku 54321 7 = (5 7 4 +4 7 3 +3 7 2 +2 7 1 +1) 10 = 13539 10. 8 / 31 k-järjestelmän numerot Koskak-järjestelmän luvun numerot saadaan jakoalgoritmin jakojäännöksistä, niin mahdollisia numeroita ovat 0,1,2,...,k 1. Josk = 2 (binääriluvut), niin mahdollisia numeroita ovat 0 ja 1 ja binääriluvut koostuvat 0:ien ja 1:en muodostamista jonoista; Josk = 3 : mahdollisia numeroita ovat 0,1 ja 2;... k = 10 : mahdollisia numeroita ovat 0,1,2,3,4,5,6,7,8 ja 9. 9 / 31 4
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ä. Kunk 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 ovat10,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. 10 / 31 Esimerkki 7.2. Esimerkki 7.2. Muunna luku893 10 a)2- b)16-järjestelmän luvuksi. Ratk.... 11 / 31 5
Esimerkki 7.3. Esimerkki 7.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 12 / 31 Esimerkki jatkoa 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 Koska7 4 = 2401 1831, niin tarvitaan vain potenssit7 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. 13 / 31 6
Binääri-, heksa - ja oktalukujen keskinäiset muunnokset 14 / 31 Binääri-, heksa - ja oktaluvut Binääri-, heksa- ja oktaluvut Yleensä muunnokset kahden lukujärjestelmän välillä tehdään10- järjestelmän kautta. Poikkeus: Heksaluvut eli16-järjestelmän luvut, oktaluvut eli8-järjestelmän luvut ja binääriluvut. Koska16 = 2 4, niin jokaista heksaluvun numeroa vastaa4numeroinen binääriluku. Esimerkiksi7 16 = (0111) 2. Koska8 = 2 3, niin jokaista oktaluvun numeroa3numeroinen binääriluku. Esimerkiksi7 8 = (111) 2. Silloin muunnokset näiden lukujoukkojen välillä voidaan tehdä suoraan muuntamalla jokainen luvun numero erikseen muuntotaulukoiden avulla. 15 / 31 Muuntotaulukot 16 / 31 7
Esimerkki 7.5. Muunna binääriluku11111001101010 a)oktaluvuksi b)heksaluvuksi. Ratk.... 17 / 31 Esimerkkejä Binäärilukuja käytetään lukujen esittämiseen tietokoneessa. Lukujen esitykset ovat pitkiä, joten okta- ja heksamuotoiset esitykset ovat helpompia käsitellä. Esimerkki 7.6. Muunna a)a7d 16 b)1753 8 binääriluvuksi. Ratk.... Esimerkki 7.7. Muunna oktaluku176522 8 heksaluvuksi. Ratk.... 18 / 31 8
7.2. Yhteenlasku eri lukujärjestelmissä 19 / 31 Yhteenlaskuesimerkki Yhteenlasku eri lukujärjestelmissä tehdään kuten10-järjestelmässä. Esimerkki 7.8. Laske a)1111 2 +100010 2 b)8ae 16 +EAE3 16. Ratk.... 20 / 31 7.3. Vähennyslasku ilman lainaamista 21 / 31 Lainaaminen vähennyslaskussa Vähennyslaskussa lainaamisen käyttö on ongelma. Hankalaa toteuttaa ohjelmallisesti, koska 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. 22 / 31 9
Vähennyslasku ilman lainaamista 10-järjestelmässä OlkootAjaB kaksi4- numeroista, positiivisista10- järjestelmän lukua jaa > B. y = A B = A B +10000 10000 = A+[ B +9999+1] 10000, missäb = B +9999 on vähennyslasku ilman lainaamista. 23 / 31 Muuntotaulukko B = B +9999:n on luvunb:n9komplementti. Sen numerot voidaan määrätä numero numerolta kiinteän muuntotaulukon (komplementin oton) mukaisesti siten, ettäb:n numero 0 korvataan 9:llä 8 korvataan 1:llä 9 korvataan 0:llä 1 korvataan 8:lla 2 korvataan 7:llä. otetaan komplementti ja koska lainaamista ei tarvita, vähentäminen joka numeron kohdalla samanlaista. 24 / 31 10
10:n komplementti LukuB = B +1 = B +9999+1 = B +10000 onb:n 10:n komplementti. Koska A B = A+B 10000, niina+b = A B +10000. A+B käsittää4:nä viimeisenä numeronaan erotuksena 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 saadaana B luvustaa+b ilman lainausta. 25 / 31 Esimerkki 7.9. Olkoot A = 5002 ja B = 3493. Tavallinen tapa laskeaa B on seuraava: 4 9 9 12 \5 \0 \0 2 3 4 9 3 A B = 1 5 0 9 26 / 31 11
Esimerkki jatkoa A = 5002 ja B = 3493. Vähentäminen ilman lainaamista: A B = A+B +1 10000 9999 3493 6506 = B jab = B +1 = B +10000 = 6507 A+B = 5002+6507 = 11509 Ensimmäinen 1 katoaa vähennettäessä 10 000 ja niinpä vähennyslaskun tulos voidaan lukea suoraan jättämällä etuykkönen pois (kun A > B) ja saadaan : A B = 1509. 27 / 31 Vähennyslasku k-järjestelmässä Lukujärjestelmän kantalukuk. Luvutp-numeroisia (p = numeropaikkojen määrä). KunAjaB positiivisia jaa > B, missä lukub = B +k p onb:n k-komplementti. y = A B = A+( B +k p ) k p, NytB = B +1, missä lukub onb:nk 1komplementti, joka saadaan joko muunnostaulukoilla tai vähentämällä lukub p-numeroisesta luvusta, jonka jokaisella numeropaikalla on numerok 1. KäytännössäB muodostetaan laskemalla aluksib ja lisäämällä siihen luku1. 28 / 31 12
Vähennyslasku binääriluvuilla Binäärilukujen vähennyslasku: (A > B, A ja B positiivisia, A :ssa ja B :ssä p = 8 numeropaikkaa): MuodostetaanB:n 1:n komplementti B vaihtamallab:n numero 0 1:ksi jab:n numero 1 0:ksi (l. vähennetään B 8- numeroisesta luvusta 11111111). MuodostetaanB laskemallab +1(B onb:n 2:n komplementti). LasketaanA+B. Poistetaan etuykkönen. 29 / 31 Esimerkki 7.10. Suorita vähennyslasku00010110 2 00001101 2 ilman lainaamista. Ratk. OlkoonA = 00010110 2 jab = 00001101 2. Silloin on B = 11110010 jab = B +1 = 11110011 A+B = 00010110 +11110011 = 100001001 } {{ }. 8 numeroa A B = 00001001 2 tai lyhyesti1001 2 30 / 31 13
Esimerkki 7.11. Laske ilman lainaamista(2101) 4 (1222) 4. Ratk.... 31 / 31 14