250 likes | 594 Views
LUKUJÄRJESTELMÄT JA LUKUJEN ESITTÄMINEN. 1997D. Binary. msb. 8AFFH. 2:n komplementti. lsb. Decimal. 0. 1. 0. 1. 1. 0. 0. 0. B = B i · 2 i. Hex. 1100111001100101B. Octal. Johdanto. Tässä luvussa
E N D
LUKUJÄRJESTELMÄT JA LUKUJEN ESITTÄMINEN 1997D Binary msb 8AFFH 2:n komplementti lsb Decimal 0 1 0 1 1 0 0 0 B = Bi · 2i Hex 1100111001100101B Octal
Johdanto Tässä luvussa • esitellään kaksi- eli binaarilukujärjestelmä sekä kahdeksan- ja kuusitoistajärjestelmät • esitetään etumerkittömien ja etumerkillä varustettujen lukujen esitys digitaalilaitteissa • esitetään kokonais- sekä kiinteän ja liukuvan pilkun binaarilukujen esitys digitaalilaitteissa • käsitellään binaarilukujen esitysmuodot, erityisesti kahden komplementtiesitys • esitetään luvun muunnos etumerkki-itseisarvoesityksestä kahden komplementtiesitykseen ja kääntäen • esitetään kahden komplementtimuotoisen luvun sananpituuden muuttaminen Luvun tavoitteena on • oppia tuntemaan digitaalitekniikassa yleisesti käytettävät lukujärjestelmät ja lukujen esitystavat ja -muodot
Kaksi- eli binaarijärjestelmä: kantaluku 2 • numerot 0 ja 1 luvut ovat pitkiä • numeroita nimitetään biteiksi (binary digit) • soveltuu hyvin digitaalilaitteisiin • asetetaan loogisen signaalin arvot 0 ja 1vastaamaan bitin arvoja 0 ja 1 2 8 • Kahdeksan- eli oktaalijärjestelmä: kantaluku 8 • numerot 0, 1, 2, 3, 4, 5, 6 ja 7 • Kuusitoista- eli heksadesimaalijärjestelmä: kantaluku 16 • yleisessä käytössä digitaalisuunnittelussa ja ohjelmoinnissa • kaksijärjestelmää havainnollisempi, luvut ovat lyhyitä • numerot 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E ja F 16 Lukujärjestelmät • Kymmen- eli desimaalijärjestelmä: kantaluku 10 • perinteisesti käytetty ja tuttu • numerot 0, 1, 2, 3, 4, 5, 6, 7, 8 ja 9 10
Lukutyypit: • etumerkittömät luvut (unsigned numbers) • kaikki luvut samanmerkkisiä (yleensä positiivisia) • etumerkkiä ei merkitä • etumerkillä varustetut luvut (signed numbers) • sekä positiivisia että negatiivisia lukuja • etumerkki merkittävä näkyviin unsigned signed Kantaluvun esittäminen ja lukutyypit • Kantaluvun (base, radix) esittäminen: • alaindeksillä luvun perässä: esimerkiksi 101012, 1758, 9410, F5C16 • kirjaimella luvun perässä: esimerkiksi 10101B, 175Q, 94D, F5CH • etuliitteellä: esimerkiksi C-kielessä 0175 = 1758, 94 = 9410, 0xF5C = F5C16 ? 1
Esitystapa: An An-1 … A2A1A0 , A-1A-2A-3 … A-m Numero Kokonais- ja murto-osan erotin (pilkku tai piste) An Kantaluku • Tulkinta: A = An·kn + An-1·kn-1 + … + A2·k2 + A1·k1 + A0·k0 +A-1·k-1 + A-2·k-2 + A-3 ·k-3 + … + A-m ·k-m An·kn Etumerkittömien lukujen esittäminen ja tulkinta ? 2 Esimerkkejä: 724,510 = 7·102 + 2·101 + 4·100 + 5·10-1 10101,01B = 1·24 + 0·23 + 1·22 + 0·21 + 1·20 + 0·2-1 + 1·2-2 = 21,2510 0724,5 = 7·82 + 2·81 + 4·80 + 5·8-1 = 468,62510 0xA50BF6 = A·165 + 5·164 + 0·163 + B·162 + F·161 + 6·160 = 1081650210
Etumerkittömiä kokonaislukuja eri järjestelmissä Heksadesimaali Desimaali Oktaali Binaari 16 0 0 0 0 1 1 1 1 2 2 2 10 3 3 3 11 10 4 4 4 100 5 5 5 101 6 6 6 110 7 7 7 111 8 8 8 10 1000 9 9 11 1001 A 10 12 1010 2 B 11 13 1011 C 12 14 1100 D 13 15 1101 E 14 16 1110 F 15 17 1111
Lukujen esitys digitaalilaitteissa • Kaikki luvut esitetään numeroiden 0 ja 1 avulla • Binaariluvuille tämä on helppoa, tarvitaan vain 0 ja 1 • Muiden järjestelmien luvuille käytetään koodausta • Luvut voivat olla • kokonaislukuja (integer) • kiinteän pilkun (fixed point) lukuja • liukuvan pilkun (floating point) lukuja (hyvin suuri lukualue) • Toisaalta ne voivat olla • etumerkittömiä • etumerkillä varustettuja • Lukujen arvoja pidetään rekistereissä • Luvun esittämiseen on käytettävissä tietty vakiomäärä tai sen monikerta bittejä, esim. 8, (12), 16, 32, 64 tai jopa 128 • Em. bittimäärä = sananpituus (word length) • Tavu (byte, B) = 8 bittiä 0 1 tavu = 8 bittiä
Esitystapa: Bn Bn-1Bn -2 … B2B1B0 Esimerkki: Kahdeksanbittinen etumerkitön kokonaisluku msb lsb 0 0 0 0 1 1 0 1 Etumerkittömät binaarikokonaisluvut Eniten merkitsevä bitti (most significant bit) msb Vähiten merkitsevä bitti (least significant bit) lsb 2 • Tulkinta: B = Bn·2n + Bn-1·2n-1 + Bn-2·2n-2 + … + B2·22 + B1·21 + B0·20 Esimerkkejä: Sananpituus on 8 bittiä. Esitä etumerkittömät kokonaisluvut 0, 1, 100,101010, 1111111 ja 11110000 0 00000000, 1 00000001, 100 00000100, 101010 00101010, 1111111 01111111, 11110000 11110000 (ei muutu) ? 3
Merkkibitti (sign bit) ilmoittaa luvun etumerkin, yleensä 0 = + ja 1 = - Kahdeksanbittinen positiivinen kokonaisluku Suuruus msb lsb Suuruus Luku = +10110002= 8810 0 1 0 1 1 0 0 0 Merkkibitti msb lsb Merkkibitti Luvun arvo riippuu esitysmuodosta 1 0 0 1 0 1 1 1 0 0 1 0 0 1 0 0 Etumerkillä varustetut binaarikokonaisluvut • 16-bittinen negatiivinen kokonaisluku
Esitystapa: Bn Bn-1 … B2B1B0 , B-1B-2B-3 … B-m Eniten merkitsevä bitti (msb) Vähiten merkitsevä bitti (lsb) Binaaripilkku 2 Etumerkittömät kiinteän pilkun binaariluvut • Tulkinta: 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 Esimerkkejä: Sananpituus on 16 bittiä ja kokonaisosan pituus 10 bittiä. Esitä etumerkittömät kiinteän pilkun luvut 0,1, 100,10101 ja 11110000,111 0,1 0000000000,100000, 100,10101 0000000100,101010 11110000,111 0011110000,111000 ? 4
Kokonaisosa • Etumerkitön kiinteän pilkun luku: Murto-osa Binaaripilkun paikka, sama kaikilla luvuilla msb lsb Kokonaisosa • Etumerkillä varustettu kiinteän pilkun luku: Murto-osa Binaaripilkun paikka, sama kaikilla luvuilla msb lsb Merkkibitti 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 Kiinteän pilkun binaarilukujen esitys digitaalilaitteissa • Binaaripilkun paikka valitaan tarpeen mukaan etukäteen pysyvästi • valinta tehdään tarvittavan lukualueen perusteella • binaaripilkun paikkaa ei merkitä mitenkään
1’s • Yhden komplementtiesitys (1's complement) • harvinainen • suhteellisen yksinkertaiset yhteen- ja vähennyslaskualgoritmit • ei esitetä tässä opintojaksossa 2’s • Kahden komplementtiesitys (2's complement) • yleisin esitystapa digitaalilaitteissa • erittäin yksinkertaiset yhteen- ja vähennyslaskualgoritmit Etumerkillä varustettujen binaarilukujen esitysmuodot ± | | • Etumerkki-itseisarvoesitys (sign-and-magnitude) • tuttu 10-järjestelmästä • monimutkaiset yhteen- ja vähennyslaskualgoritmit • yksinkertainen kertolaskualgoritmi
Positiivisten lukujen esitys • merkkibitti = 0 • samanlainen etumerkki-itseisarvoesityksessä ja kahden komplementtiesityksessä • suuruusosa ilmaisee luvun arvon • esityksen tulkinta kuten edellä olleissa esimerkeissä + • Negatiivisten lukujen esitys • merkkibitti = 1 • muutoin erilainen eri esitystavoissa • etumerkki-itseisarvoesityksessä suuruusosa on luvun itseisarvo • kahden komplementtiesityksessä suuruusosa on luvun itseisarvon kahden komplementti – Positiivisten ja negatiivisten binaarilukujen esitys
Esimerkki 1: 0110100 Esimerkki 2: 1000111 Luku 0 1 1 0 1 0 0 2:n kompl. 1 0 0 1 1 0 0 Luku 1 0 0 0 1 1 1 2:n kompl. 0 1 1 1 0 0 1 Säilyvät Säilyy Kääntyvät Kääntyvät Kahden komplementin muodostaminen • Aloitetaan vähiten merkitsevästä bitistä • Jos bitti on = 0, sitä ei muuteta, vaan siirrytään seuraavaan bittiin • Ensimmäinen 1-bitti säilytetään vielä ennallaan • Loput bitit käännetään eli invertoidaan 2’s ? 5
Kahden komplementin kahden komplementti • Komplementoimalla komplementti saadaan alkuperäinen luku uudelleen • Jos tiedetään luvun kahden komplementti, alkuperäinen luku saadaan komplementoimalla se
Esimerkki: Muunna etumerkki-itseisarvomuotoiset binaariluvut A ja Bkahden komplementtimuotoon ja kääntäen Etumerkki- Kahden itseisarvo komplementti A = 01100011 01100011 B = 10110010 11001110 Positiivinen - säilyy ennallaan Negatiivinen - suuruusosa komplementoidaan Muunnokset etumerkki-itseisarvoesityksen ja kahden komplementtiesityksen välillä • Positiiviset luvut samoja säilyy ennallaan • Negatiiviset luvut erilaisia • merkkibitti aina 1 • suuruusosa muunnetaan muodostamalla sen kahden komplementti • muunnos on samanlainen kumpaankin suuntaan ? 6
Binaarilukujen esitys eri esitystavoissa Desimaali- Etumerkki- Kahden luku itseisarvo komplementti +7 0111 0111 +6 0110 0110 +5 0101 0101 +4 0100 0100 +3 0011 0011 +2 0010 0010 +1 0001 0001 +0 0000 0000 - 0 1000 - - 1 1001 1111 - 2 1010 1110 - 3 1011 1101 - 4 1100 1100 - 5 1101 1011 - 6 1110 1010 - 7 1111 1001 - 8 - 1000 ± | | 2’s
Binaarilukujen sananpituuden muuttaminen • Usein digitaalilaitteissa käytetään useaa eri sananpituutta lukujen esittämiseen, esimerkiksi • integer: 32-bittinen kahden komplementtimuotoinen kokonaisluku • short: 16-bittinen kahden komplementtimuotoinen kokonaisluku • long: 64-bittinen kahden komplementtimuotoinen kokonaisluku • Lukuja joudutaan muuttamaan sananpituudesta toiseen • Lyhennettäessä luvun pitää mahtua kokonaan lyhyempään sananpituuteen • Luvun arvo ei saa muuttua muunnoksessa • Luvun etumerkki ei saa muuttua muunnoksessa 1632
0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 Kahden komplementtimuotoisten positiivisten lukujen sananpituuden muunnos • Lyhennys • poistetaan alusta nollia eli merkkibittejä • Pidennys • lisätään alkuun nollia eli merkkibittejä + Suuruusosa Suuruusosa Merkkibitti (+5810) (+5810) Merkkibitti
1 1 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 Kahden komplementtimuotoisten negatiivisten lukujen sananpituuden muunnos • Lyhennys • poistetaan alusta ykkösiä eli merkkibittejä • Pidennys • lisätään alkuun ykkösiä eli merkkibittejä – Suuruus Suuruus Merkkibitti (-5810) (-5810) Merkkibitti
Liukuvan pilkun luvut , • Kiinteän pilkun esityksillä on heikkouksia • suppea lukualue kohtuullisilla esityspituuksilla • esityspituuden lisääminen yhdellä bitillä vain kaksinkertaistaa lukualueen • esityspituuden kasvattaminen kasvattaa myös esitystarkkuutta, mikä usein on tarpeetonta • Liukuvan pilkun esityksellä poistetaan nämä heikkoudet • käytännössä yleensä riittävän laaja lukualue 32:lla bitillä • esityspituuden lisääminen yhdellä bitillä kasvattaa lukualueen toiseen potenssiin • Vastaa tekniikassa yleistä tapaa esittää luvut kymmenen potenssien avulla • esimerkkejä: 0,54871 · 1026, -7,24685 · 10-18, -0,10025 · 1036 • Liukuvan pilkun luvuilla laskemiseen prosessoreissa on erityinen laskentayksikkö (floating point unit, FPU)
s e f Liukuvan pilkun lukujen esitystapa , 23 bittiä • Käytettävissä oleva bittimäärä jaetaan kolmeen osaan • merkkibitti s (sign bit) • eksponentti e (exponent, characteristic) • mantissa f (fraction, mantissa, argument) • Luvun arvov saadaan kaavasta v = (-1)s · 2e-b · 0,f tai v = (-1)s · 2e-b · 1,f • 32-bittisen liukuluvun esitys: Mantissa 8 bittiä Eksponentti Merkkibitti
Eksponentti ja mantissa • Eksponentti e esitetään siirretyssä esitysmuodossa (biased) • e:stä vähennetään ennen potenssiin korottamista siirre (bias) b • b on likimain e:n suurin mahdollinen arvo jaettuna kahdella • lukualue saadaan ulottumaan myös itseisarvoltaan ykköstä pienempiin lukuihin • Esimerkki: • e:lle on varattu 8 bittiä • tällöin emax = 255 b = 127 • 0 e 255 -126 e - b 127 • Mantissa esitetään itseisarvomuodossa eikä käytetä kahden komplementtiesitystä ,
Esimerkki liukuvan pilkun luvuista: ANSI/IEEE:n standardi • ANSI/IEEE:n standardi 754-1985 • Laaja ja yksityiskohtainen • Määrittelee esitystavat ja laskutoimitukset • Laadittu lähinnä mikrotietokoneita varten • Kaksi perusesitystapaa • yksinkertainen esitystarkkuus: 32 bittiä: s + 8 e + 23 f • kaksinkertainen esitystarkkuus: 64 bittiä: s + 11 e + 52 f ANSI/IEEE Std 754-1985 , Yksinkertainen Kaksinkertainen esitystarkkuus esitystarkkuus Suurin luku 2128 3,4 · 1038 21024 1,8 · 10308 Itseisarvoltaan pienin tarkka luku ( 0) 2-126 1,2 · 10-382-1022 2,2 · 10-308 Esitystarkkuus 24 bittiä eli 7 10-j. num. 53 bittiä eli 16 10-j. num.
Yhteenveto • Digitaalitekniikassa käytetään lukujärjestelmiä, joiden kantaluvut ovat 10, 2, 8 ja 16 • Kantaluku voidaan esittää joko alaindeksillä, kirjaimella luvun perässä tai etuliitteellä • Binaariluvut esitetään digitaalilaitteissa määrämittaisissa rekistereissä • kokonais-, kiinteän pilkuntai liukuvan pilkun lukuina • etumerkittöminä tai etumerkillä varustettuina lukuina • etumerkki-itseisarvo- tai komplementtiesitystä käyttäen • Yleisin binaarilukujen esitysmuoto on kahden komplementtiesitys • Siinä lukujen yhteen- ja vähennyslasku on erittäin yksinkertainen • Muunnos etumerkki-itseisarvoesityksen ja kahden komplementtiesityksen välillä on yksinkertainen • Kahden komplementtimuotoisen luvun sananpituutta voidaan muuttaa • Liukuvan pilkun esityksellä voidaan esittää hyvin laaja lukualue kohtullisella bittimäärällä, esimerkki tästä on ANSI/IEEE-standardiesitys