140 likes | 449 Views
LUKUJÄRJESTELMÄMUUNNOKSET. k 10. 2 10. 2´s 10. 10 8 10 16. 10 2. 10 2´s. 2 8. 8 2. 2 16. 16 2. Johdanto. Tässä luvussa perustellaan, miksi on tarpeellista osata muuntaa lukuja lukujärjestelmästä toiseen
E N D
LUKUJÄRJESTELMÄMUUNNOKSET k10 210 2´s10 108 1016 102 102´s 28 82 216 162
Johdanto Tässä luvussa • perustellaan, miksi on tarpeellista osata muuntaa lukuja lukujärjestelmästä toiseen • esitetään lukujen muuntaminen lukujärjestelmästä toiseen • keskitytään erityisesti muunnoksiin kymmenjärjestelmän ja kaksijärjestelmän lukujen välillä • käsitellään lyhyesti myös muita digitaalilaitteiden yhteydessä tarpeellisia muunnoksia Luvun tavoitteena on • opettaa ymmärtämään lukujärjestelmämuunnosten tarpeellisuus • opettaa muuntamaan lukuja lukujärjestelmästä toiseen, erityisesti tekemään muunnoksia kymmenjärjestelmän ja kaksijärjestelmän lukujen välillä
Lukujärjestelmämuunnokset • Ihminen haluaa antaa syöttötiedot kymmenjärjestelmässä • Tietokone käsittelee parhaiten binaarilukuja • tarvitaan muunnos 10-järjestelmästä 2-järjestelmään • Tietokone laskee tulokset binaarilukuina • Ihminen haluaa tulostiedot kymmenjärjestelmän lukuina • tarvitaan muunnos 2-järjestelmästä 10-järjestelmään • Suunnittelija ja ohjelmoija tarvitsevat muitakin muunnoksia • 10-järjestelmä 16-järjestelmä • 16-järjestelmä 10-järjestelmä • 2-järjestelmä 16-järjestelmä havainnollisuus, lyhyt esitys • 16-järjestelmä 2-järjestelmä bittitason signaalien tarkastelu • 2-järjestelmä 8-järjestelmä • 8-järjestelmä 2-järjestelmä 102 • merkkikoodien esitys, • muistipaikkojen numerot jne. • joissain järjestelmissä • käytetään oktaalilukuja
Esimerkiksi muunnos kaksijärjestelmästä kymmenjärjestelmään: • Luku on Bn Bn-1 … B2B1B0 , B-1B-2B-3 … B-m • Käytetään summakaavaa: B = Bn·2n + Bn-1·2n-1 + … + B2·22 + B1·21 + B0·20 + B-1·2-1 + B-2 ·2-2 + B-3 ·2-3 +… +B-m·2-m 210 Etumerkittömän luvun muunnos muusta järjestelmästä kymmenjärjestelmään • Käytetään esityksen määrittelyn summakaavaa • Tehdään laskutoimitus kymmenjärjestelmässä • Kätevä tehdä esimerkiksi laskimella k10 Esimerkki: 10101,012 = 1·24 + 0·23 + 1·22 + 0·21 + 1·20 + 0·2-1 + 1·2-2 = 21,2510
Muunnetaan kokonaisosa Muunnetaan murto-osa Yhdistetään tulokset • Kokonaisosan muunnosalgoritmi • jaetaan muunnettavaa lukua jatkuvasti muun järjestelmän kantaluvulla • erotetaan jakojäännökset • jatketaan, kunnes osamäärä on nolla • muunnostulos saadaan jakojäännöksistä :k • Murto-osan muunnosalgoritmi • kerrotaan muunnettavaa lukua jatkuvasti muun järjestelmän kantaluvulla • erotetaan kokonaisosat • jatketaan, kunnes murto-osa on nolla tai on saatu riittävä muunnostulos • muunnostulos saadaan kokonaisosista ·k Etumerkittömän luvun muunnos kymmenjärjestelmästä muuhun järjestelmään 10k
Muunnos 10-järj:stä 2-järjestelmään, kokonaisosa • Esimerkki: muunna 999,57812510 kaksijärjestelmään. Esityspituus on 32 bittiä, josta 22 bittiä kokonaisosassa. • Muunnetaan kokonaisosa: Jakolaskut Tulokset Jakojäännökset 999/2 = 499 + 1/2 1 (lsb)499/2 = 249 + 1/2 1249/2 = 124 + 1/2 1124/2 = 62 + 0/2 062/2 = 31 + 0/2 031/2 = 15 + 1/2 115/2 = 7 + 1/2 17/2 = 3 + 1/2 13/2 = 1 + 1/2 11/2 = 0 + 1/2 1 (msb) • Saadaan 99910 = 11111001112 Pilkkua lähinnä oleva bitti saadaan ensin ? 1 102
Muunnos 10-järj:stä 2-järjestelmään, desimaaliosa • Muunnettava luku on 999,57812510 • Muunnetaan desimaaliosa: Kertolaskut Tulokset Kokonaisosat 2 · 0,578125 = 1 + 0,15625 1 (msb)2 · 0,15625 = 0 + 0,3125 02 · 0,3125 = 0 + 0,625 02 · 0,625 = 1 + 0,25 12 · 0,25 = 0 + 0,5 02 · 0,5 = 1 + 0 1 (lsb) • Saadaan 0,57812510 = 0,1001012 • Yhdistetään muunnostulokset: 999,57812510 = 1111100111,1001012 • Lisätään nollat, alkuun 12 ja loppuun neljä: 1111100111,1001012 = 0000000000001111100111,10010100002 Pilkkua lähinnä oleva bitti saadaan ensin ? 2 102
Muunnos 10-järj:stä 2-järj., päättymätön desimaaliosa • Desimaaliosan muunnos ei yleensä pääty • Pyöristetään niin, että saatu muunnostulos mahtuu käytettävissä olevaan bittimäärään • Esimerkki: Muunna 0,310 kaksijärjestelmään. Luvussa on 4 + 4 bittiä. Kertolaskut Tulokset Kokonaisosat 2 · 0,3 = 0 + 0,6 0 (msb)2 · 0,6 = 1 + 0,2 12 · 0,2 = 0 + 0,4 02 · 0,4 = 0 + 0,8 02 · 0,8 = 1 + 0,6 12 · 0,6 = 1 + 0,2 1… • Pyöristetään ja saadaan siis: 0,310 = 0,01012 = 0000,01012 ? 3 102 Esittele muunnos-laskin
Muunnos kymmenjärjestelmän luvusta kahden komplementtimuotoiseksi luvuksi • Luvun suuruusosa muunnetaan binaariluvuksi • Täydennetään tarvittaessa käytettävään sananpituuteen • kokonaisosa: lisätään nollia alkuun • murto-osa: lisätään nollia loppuun • Jos luku on positiivinen • merkkibitiksi 0 • suuruusosa sellaisenaan merkkibitin perään • Jos luku on negatiivinen • merkkibitiksi 1 • suuruusosan kahden komplementti merkkibitin perään 102’s Muista järjestys: täydennys, yhdistäminen
Muunnos kymmenjärjestelmän luvusta kahden komplementtimuotoiseksi luvuksi, esimerkki • Esimerkki: Muunna kymmenjärjestelmän luku -113,62510 kahden komplementtimuotoiseksi binaariluvuksi. Sananpituus on 16 bittiä, joista kokonaisosaan käytetään 10 bittiä. • Muunnetaan kokonaisosa 113 jatkuvan kahdella jakamisen algoritmilla binaariluvuksi. Saadaan 11310 = 11100012 • Muunnetaan murto-osa 0,625 jatkuvan kahdella kertomisen algoritmilla binaariluvuksi. Saadaan 0,62510 = 0,1012 • Yhdistetään tulokset suuruusosaksi: 113,62510 = 1110001,1012 • Täydennetään: kokonaisosa 10 bittiä, murto-osa 16 - 1 - 10 bittiä = 5 bittiä • 1110001,1012 = 0001110001,101002 • Luku on negatiivinen • merkkibitiksi 1 • suuruusosan kahden komplementti merkkibitin perään • -113,62510 = 11110001110,011002 (kahden komplementtimuoto) ? 4 102’s
Muunnos kahden komplementtimuotoisesta luvusta kymmenjärjestelmän luvuksi • Muunnetaan etumerkki-itseisarvoesitykseen • Muunnetaan suuruusosa kymmenjärjestelmän luvuksi määritelmän mukaan summakaavalla B = Bn·2n + Bn-1·2n-1 + … + B2·22 + B1·21 + B0·20 + B-1·2-1 + B-2 ·2-2 + B-3 ·2-3 +… +B-m·2-m • Etumerkki määräytyy merkkibitin mukaan: 0 +, 1 - • Toinen tapa: • käytetään suoraan summakaavaa, mutta otetaan merkkibitti mukaan miinusmerkkisenä B = -Bn+1·2n+1 + Bn·2n + Bn-1·2n-1 + … + B2·22 + B1·21 + B0·20 + B-1·2-1 + B-2 ·2-2 + B-3 ·2-3 +… +B-m·2-m 210
Muunnos kahden komplementtimuotoisesta luvusta kymmenjärjestelmän luvuksi, esimerkkejä Esimerkki: Muunna kahden komplementtimuotoiset binaariluvut A = 01100011 ja B = 10110100 kymmenjärjestelmään. A = 011000112(positiivinen, suora muunnos summakaavalla) = + (1 · 26 + 1 · 25 + 0 · 24 + 0 · 23 + 0 · 22 + 1 · 21 + 1 · 20 ) = + (64 + 32 + 2 + 1) = +9910 ? 5 B = 101101002(negatiivinen, kahden komplementtimuotoinen) = 110011002(negatiivinen, etumerkki-itseisarvomuotoinen) = - (1 · 26 + 0 · 25 + 0 · 24 + 1 · 23 + 1 · 22 + 0 · 21 + 0 · 20 ) = - (64 + 8 + 4) = -7610 B:n suora muunnos: B = 101101002(negatiivinen, kahden komplementtimuotoinen) = -1 · 27 + 0 · 26 + 1 · 25 + 1 · 24 + 0 · 23 + 1 · 22 + 0 · 21 + 0 · 20 = -128 + 32 + 16 + 4 = -7610
Muunnokset 2-, 8- ja 16-järjestelmien välillä • Koska 8 = 23 ja 16 = 24, muunnokset ovat helppoja ja tehdään bittejä ryhmittelemällä ja muuntamalla kukin ryhmä erikseen • Tarvittaessa etumerkittömän binaariluvun alkuun lisätään nollia ja kahden komplementtimuotoisen luvun alkuun merkkibittejä • Esimerkki: Muunna 16-bittinen etumerkitön binaariluku 1011100100001010 oktaaliluvuksi ja heksadesimaaliluvuksi • Oktaaliluvuksi: 0012201122100221002200122010 010000300004000040000100002 • Heksaluvuksi: 1011221001220000221010 0 B0000-900 00 00000 A • Muunnokset oktaali- ja heksadesimaalilukujen välillä tehdään binaarilukujen kautta • 8 2 16 ja 16 2 8 ? 6 28 Lisätään nollat 216
Yhteenveto • Digitaalitekniikassa tarvitaan lukujärjestelmämuunnoksia, koska ihmiset ovat tottuneet kymmenjärjestelmään ja tietokoneet laskevat parhaiten binaariluvuilla • Muunnos muusta järjestelmästä kymmenjärjestelmään tehdään käyttämällä summakaavaa • Muunnos kymmenjärjestelmästä muuhun järjestelmään tehdään kahdella jakamisen algoritmilla (kokonaisosa) ja kahdella kertomisen algoritmilla (murto-osa) • Murto-osan muunnos voi olla päättymätön jolloin lopputulos pyöristetään • Muunnos kymmenjärjestelmän luvusta kahden komplementtimuotoiseksi luvuksi on kolmivaiheinen • Muunnos kahden komplementtimuotoisesta luvusta kymmenjärjestelmän luvuksi voidaan tehdä joko kaksivaiheisena tai suorana muunnoksena • Muunnokset binaariluvuista oktaali- ja heksadesimaaliluvuiksi ja kääntäen tehdään bittejä ryhmittelemällä