Kappale 20: Kantaluvut 20 Johdanto: Kantaluvut... 328 Kantalukujen syöttäminen ja muuntaminen... 329 Matemaattiset toiminnot Hex- ja Bin-luvuilla... 330 Bittien vertaileminen ja manipulointi... 331 Huom! MATH/Base-valikon avulla on helppo valita useita kantalukuihin liittyviä toimintoja. Kokonaisluvut voidaan syöttää TI-89-laskimeen desimaali-, binaari- tai heksadesimaalimuodossa. Esitettävän tuloksen muoto voidaan määritellä Base-tilan asetuksilla. Murtoluku- ja liukulukutulokset esitetään aina desimaalimuodossa. Binaariluvut käyttävät base 2- esitystavassa lukuja 0 ja 1: 100 2 0 ù 0 = +0 2 1 ù 0 = +0 2 2 ù 1 = +4 Heksadesimaaliluvut käyttävät base 16 - esitystavassa lukuja 0 9 ja kirjaimia A F: A8F 16 0 ù F = +15 16 1 ù 8 = +128 16 2 ù A = +2560 Dec Base 10 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Bin Base 2 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 10000 Hex Base 16 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 Voit käyttää TI-89-laskinta luvun muuntamiseen kannasta toiseen. Esimerkiksi 100 binaari = 4 desimaali ja A8F heksadesimaali = 2703 desimaali. Pitkät, vaikeasti muistettavat binaariluvut pikakirjoitetaan usein heksadesimaalimuotoisina. Esimerkiksi: 1010 1111 0011 0111 A F 3 7 Heksadesimaalia AF37 on usein helpompi käsitellä kuin binaaria 1010111100110111. TI-89:ssa voit vertailla binaarilukuja ja manipuloida niitä bitti kerrallaan. Kappale 20: Kantaluvut 327
Johdanto: Kantaluvut Laske yhteen luvut binaari-10 (kanta 2), heksadesimaali-f (kanta 16) ja desimaali-10 (kanta 10). Vaihda sitten kokonaisluvun kanta konversio-operaattorilla 4. Huomaa, kuinka Base-tilan muuttaminen vaikuttaa esitettäviin tuloksiin. Vaihe Näppäimet Näyttö 1. Ota esiin MODE-valintaikkuna, sivu 2. Valitse Base-tilaksi DEC. Kokonaislukutulokset esitetään Base-tilan määräämässä muodossa. Murtoluku- ja liukulukutulokset esitetään aina desimaalimuodossa. 2. Laske 0b10+0hF+10. Binaarisyöte vaatii etuliitteen 0b ja heksadesimaalisyöte etuliitteen 0h (nolla ja B - tai H-kirjain). Ilman etuliitettä syötettä käsitellään desimaalilukuna. 3. Lisää tulokseen numero 1 ja muunna se binaariseksi. 2 avaa 4-konversio-operaattorin. 4. Lisää tulokseen numero 1 ja muunna se heksadesimaaliseksi. 5. Lisää tulokseen numero 1 ja jätä se oletusdesimaalitilaan. 3 (siirry Base-tilaan merkillä D ) B 1 O j B10«O 2 HF j«10 «1 2 2 BIN j «1 2 2 HEX j «1 Tärkeää: Etuliitteessä 0b tai 0h on nolla, ei O-kirjain. Nollaa seuraa B- tai H-kirjain. 6. Vaihda Base-tilaksi HEX. Kun Base = HEX tai BIN, tuloksen suuruutta rajoittavat eräät tilarajoitukset. Lisätietoja sivulla 330. 3 (siirry Base-tilaan merkillä D ) B 2 Tuloksen kanta merkitään etuliitteellä 0b tai 0h. 7. Laske 0b10+0hF+10. O j B10«O 2 HF j«10 8. Vaihda Base-tilaksi BIN. 3 (siirry Base-tilaan merkillä D ) B 3 9. Syötä uudelleen 0b10+0hF+10. 328 Kappale 20: Kantaluvut
Kantalukujen syöttäminen ja muuntaminen Base-tilasta riippumatta pitää binaari- tai heksadesimaalilukua syötettäessä käyttää oikeaa etuliitettä. Binaari- tai heksadesimaaliluvun syöttäminen Huom! Etuliitteen kirjaimet b ja h, sekä heksadesimaalikirjaimet A F voidaan kirjoittaa pienillä tai isoilla kirjaimilla. Syötä binaariluku muodossa: 0b binarynumber (esimerkiksi: 0b11100110) Korkeintaan 32-numeroinen binaariluku Nolla, ei kirjain O, ja kirjain b Syötä heksadesimaaliluku muodossa: 0h hexadecimalnumber (esimerkiksi: 0h89F2C) Korkeintaan 8-numeroinen heksadesimaaliluku Nolla, ei kirjain O, ja kirjain h Lukua, joka syötetään ilman etuliitettä 0b tai 0h, käsitellään aina desimaalilukuna. Jos kirjaimia A F sisältävä heksadesimaaliluku syötetään ilman etuliitettä 0h, käsitellään syötettä tai sen osaa muuttujana. Kantalukujen muuntaminen Huom! Jos syöte ei ole kokonaisluku, näyttöön tulee Domain error -virheilmoitus. Käytä 4-konversio-operaattoria. integerexpression 4 Bin integerexpression 4 Dec integerexpression 4 Hex Esimerkiksi desimaaliluvun 256 muuntaminen binaariseksi: 256 4 Bin Binaariluvun 101110 muuntaminen heksadesimaaliksi: 0b101110 4 Hex Operaattorin 4 saat näppäilemällä 2. Kantakonversioita voi valita myös MATH/Base-valikosta. Binaari- tai heksadesimaalisyöte vaatii etuliitteen 0b tai 0h. Tuloksen kanta merkitään etuliitteellä 0b tai 0h. Vaihtoehtoiset konversiomenetelmät 4-operaattorin sijasta voit: 1. Asettaa Base-tilan haluamaasi kantaan 3 - operaattorilla (sivu 330). 2. Kirjoittaa Home-näytössä luvun, jonka haluat muuntaa (muista oikea etuliite). Paina. Jos Base-tila = BIN: Kappale 20: Kantaluvut 329
Matemaattiset toiminnot Hex- ja Bin-luvuilla Kaikissa toiminnoissa, joissa käytetään kokonaislukua, voidaan syöttää binaari- tai heksadesimaaliluku. Ratkaisut esitetään Base-tilan mukaisesti. Ratkaisujen koko on kuitenkin rajoitettu, kun Base = HEX tai BIN. Tulosten Base-tilan asettaminen Huom! Base-tila vaikuttaa vain tulokseen. Käytä aina etuliitettä 0h tai 0b kun syötät heksadesimaali- tai binaarilukuja. 1. Ota esiin MODE-näytön sivu 2 näppäilemällä 3. 2. Vieritä Base-tilaan, paina B ja valitse haluamasi asetus. 3. Sulje MODE-näyttö painamalla. Base-tila määrää vain kokonaislukutulosten esitysmuodon. Murtoluku- ja liukulukutulokset esitetään aina desimaalimuodossa. Etuliite 0h tuloksessa määrittelee kannan. Jakaminen, kun Base = HEX tai BIN Kun Base=HEX tai BIN, jakotulos esitetään heksadesimaali- tai binaarimuodossa vain jos se on kokonaisluku. Jakotulos on aina kokonaisluku, jos käytät e:n asemesta toimintoa intdiv(). Näppäile niin saat tuloksen muodossa APPROXIMATE. Kokorajoitukset, kun Base = HEX tai BIN Kun Base=HEX tai BIN, kokonaislukutulos tallennetaan sisäisesti merkittynä, 32-bittisenä binaarilukuna, jonka vaihteluväli on (heksadesimaalisena ja desimaalisena): 0hFFFFFFFF ë1 0h1 1 0h80000000 ë2,147,483,648 0h0 0 0h7FFFFFFF 2,147,483,647 Jos tulos on liian laaja tallennettavaksi merkittynä, 32-bittisenä binaarimuotona, symmetrinen moduulitoiminto tuo tuloksen vaihteluvälin sisään. Tämä koskee lukuja, jotka ovat suurempia kuin 0h7FFFFFFF. Esimerkiksi luvut välillä 0h80000000 0hFFFFFFFF muuttuvat negatiivisiksi. 330 Kappale 20: Kantaluvut
Bittien vertaileminen ja manipulointi Seuraavilla operaattoreilla ja funktioilla voit vertailla tai manipuloida binaariluvun bittejä. Voit syöttää kokonaisluvun haluamassasi kantalukumuodossa. Syötteesi muutetaan automaattisesti binaarimuotoon operaatiota varten ja tulokset esitetään Base-tilan mukaisesti. Boolen operaattorit Huom! Boolen operaattorit valitaan MATH/Basevalikosta. Esimerkkejä kaikkien operaattoreiden käytöstä Liitteessä A. Operaattori ja rakenne not integer Kuvaus Yhden komplementti, jossa jokainen bitti on käännetty. integer Kahden komplementti, joka on yhden komplementti + 1. integer1 and integer2 integer1 or integer2 integer1 xor integer2 Kun bittejä vertaillaan and-operaattorilla bitti kerrallaan, tulos on 1 jos molemmat bitit ovat ykkösiä. Muussa tapauksessa tulos on 0. Palautettu arvo esittää bittituloksia. Kun bittejä vertaillaan or-operaattorilla bitti kerrallaan, tulos on 1 jos toinen biteistä on 1. Tulos on 0 vain, jos molemmat bitit ovat nollia. Palautettu arvo esittää bittituloksia. Kun bittejä vertaillaan xor-operaattorilla bitti kerrallaan, tulos on 1 jos toinen biteistä (mutta ei molemmat) on 1. Tulos on 0, jos molemmat bitit ovat nollia tai molemmat ovat ykkösiä. Palautettu arvo esittää bittituloksia. Jos syötetään: 0h7AC36 and 0h3D5F Heksadesimaaliset kokonaisluvut muunnetaan sisäisesti merkatuiksi, 32-bittisiksi binaariluvuiksi. Vastaavia bittejä vertaillaan. Jos Base-tila = BIN: Huom! Jos syötetty kokonaisluku on liian suuri muutettavaksi merkattuun 32- bittiseen binaarimuotoon, arvo tuodaan käyvän vaihteluvälin sisään symmetrisellä moduulitoiminnolla (sivu 330). 0h7AC36 = 0b00000000000001111010110000110110 and and 0h3D5F = 0b00000000000000000011110101011111 0b00000000000000000010110000010110 = 0h2C16 Etunollia ei näytetä ratkaisussa. Tulos esitetään Base-tilan mukaisesti. Kappale 20: Kantaluvut 331
Bittien kierto ja vaihto Huom! Funktiot valitaan MATH/Base-valikosta. Esimerkkejä kaikkien operaattoreiden käytöstä Liitteessä A. Funktio ja rakenne rotate(integer) tai rotate(integer,#ofrotations) shift(integer) tai shift(integer,#ofshifts) Kuvaus Jos #ofrotations: jätetään pois, bitit kiertävät kerran oikealle (oletus on ë 1). on negatiivinen, bitit kiertävät oikealle niin monta kertaa, kuin on määritetty. on positiivinen, bitit kiertävät vasemmalle niin monta kertaa, kuin on määritetty. Kun kierto on oikealle, kiertää oikeanpuoleisin bitti vasemmanpuoleiseksi, ja päinvastoin kun kierto on vasemmalle. Jos #ofshifts: jätetään pois, bitit vaihtavat kerran oikealle (oletus on ë 1). on negatiivinen, bitit vaihtavat oikealle niin monta kertaa, kuin on määritetty. on positiivinen, bitit vaihtavat vasemmalle niin monta kertaa, kuin on määritetty. Vaihdossa oikealle oikeanpuoleisin bitti tiputetaan pois ja sen tilalle laitetaan 0 tai 1 täsmäämään vasemmanpuoleisimman bitin kanssa. Vaihdossa vasemmalle vasemmanpuoleisin bitti tiputetaan pois ja oikeanpuoleisimmaksi bitiksi laitetaan 0. Jos syötetään: shift(0h7ac36) Heksadesimaalinen kokonaisluku muunnetaan sisäisesti merkatuksi 32-bittiseksi binaariluvuksi. Jos Base-tila = BIN: Sitten vaihto-komentoa sovelletaan binaarilukuun. Jokainen bitti siirtyy oikealle. Huom! Jos syötetty kokonaisluku on liian suuri muutettavaksi merkattuun 32-bittiseen binaarimuotoon, arvo tuodaan käyvän vaihteluvälin sisään symmetrisellä moduulitoiminnolla (sivu 330). 0h7AC36 = 0b00000000000001111010110000110110 Lisää nollan, jos vasemmanpuoleisin bitti on 0, tai ykkösen, jos vasemmanpuoleisin bitti on 1. 0b00000000000000111101011000011011 = 0h3D61B Etunollia ei näytetä ratkaisussa. Ratkaisu esitetään Base tilan mukaisesti. Tiputetaan 332 Kappale 20: Kantaluvut