Digitaalitekniikan matematiikka Luku 9 Sivu 1 (26) Lukujärjestelmät ja lukujen esittäminen ANSI/IEEE Std 754-2008 0 1 0 1 1 0 0 0 B = Σ B i 2 i
Digitaalitekniikan matematiikka Luku 9 Sivu 2 (26) 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- ja kiinteän 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 esitetään liukuvan pilkun lukujen esitys digitaalilaitteissa Luvun tavoitteena on oppia tuntemaan digitaalitekniikassa yleisesti käytettävät lukujärjestelmät ja lukujen esitystavat ja -muodot
Digitaalitekniikan matematiikka Luku 9 Sivu 3 (26) 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 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 1 vastaamaan bitin arvoja 0 ja 1 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 10 2 8 16
Digitaalitekniikan matematiikka Luku 9 Sivu 4 (26) Kantaluvun esittäminen ja lukutyypit? 1 Kantaluvun (base, radix) esittäminen: alaindeksillä luvun perässä: esimerkiksi 10101 2, 175 8, 94 10, F5C 16 kirjaimella luvun perässä: esimerkiksi 10101B, 175Q, 94D, F5CH etuliitteellä: esimerkiksi C-kielessä 0175 = 175 8, 94 = 94 10, 0xF5C = F5C 16 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
Digitaalitekniikan matematiikka Luku 9 Sivu 5 (26) Etumerkittömien lukujen esittäminen ja tulkinta Esitystapa: Numero Kokonais- ja murto-osan erotin (pilkku tai piste) A n A n -1 A 2 A 1 A 0, A -1 A -2 A -3 A -m A n? 2 Kantaluku Tulkinta: A = A n k n + A n -1 k n -1 + + A 2 k 2 + A 1 k 1 + A 0 k 0 + A -1 k -1 + A -2 k -2 + A -3 k -3 + + A -m k -m A n k n Esimerkkejä: 724,5 724,5 10 = 10 7 10 7 10 2 + 2 10 2 10 1 + 4 10 4 10 0 + 5 10 5 10-1 -1 10101,01B = 1 2 1 2 4 + 0 2 0 2 3 + 1 2 1 2 2 + 0 2 0 2 1 + 1 2 1 2 0 + 0 2 0 2-1 -1 + 1 2 1 2-2 -2 = 21,25 21,25 10 10 0724,5 0724,5 = 7 8 7 8 2 + 2 8 2 8 1 + 4 8 4 8 0 + 5 8 5 8-1 -1 = 468,625 10 10 0xA50BF6 = A 16 A 16 5 + 5 16 5 16 4 + 0 16 0 16 3 + B 16 B 16 2 + F 16 F 16 1 + 6 16 6 16 0 = 10816502 10 10
Digitaalitekniikan matematiikka Luku 9 Sivu 6 (26) Etumerkittömiä kokonaislukuja eri järjestelmissä Heksadesimaali 0 1 2 3 4 5 6 7 8 9 A B C D E F Desimaali Oktaali Binaari 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 16 10 8 2
Digitaalitekniikan matematiikka Luku 9 Sivu 7 (26) 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 Esim. 1001 = 9 10 tavu = 8 bittiä 1
Digitaalitekniikan matematiikka Luku 9 Sivu 8 (26) Etumerkittömät binaarikokonaisluvut Esitystapa: Eniten merkitsevä bitti (most significant bit) msb B n B n -1 B n -2 B 2 B 1 B 0 Tulkinta: Vähiten merkitsevä bitti (least significant bit) lsb 2 Esimerkki: Kahdeksanbittinen etumerkitön kokonaisluku msb 0 0 0 0 1 1 0 1 B = B n 2 n + B n -1 2 n -1 + B n -2 2 n -2 + + B 2 2 2 + B 1 2 1 + B 0 2 0 lsb? 3 Esimerkkejä: Sananpituus on on 8 bittiä. bittiä. Esitä Esitä etumerkittömät kokonaisluvut 0, 0, 1, 1, 100,101010, 1111111 ja ja 11110000 0 00000000, 1 00000001, 100 100 00000100, 101010 00101010, 1111111 01111111, 11110000 11110000 (ei (ei muutu) muutu)
Digitaalitekniikan matematiikka Luku 9 Sivu 9 (26) Etumerkillä varustetut binaarikokonaisluvut Merkkibitti (sign bit) ilmoittaa luvun etumerkin, yleensä 0 = + ja 1 = - Kahdeksanbittinen positiivinen kokonaisluku msb lsb 0 1 0 1 1 0 0 0 Luku = +1011000 2 = 88 10 Merkkibitti Suuruus 16-bittinen negatiivinen kokonaisluku msb lsb 1 0 0 1 0 1 1 1 0 0 1 0 0 1 0 0 Merkkibitti Suuruus Luvun arvo riippuu esitysmuodosta
Digitaalitekniikan matematiikka Luku 9 Sivu 10 (26) Etumerkittömät kiinteän pilkun binaariluvut Esitystapa: Eniten merkitsevä bitti (msb) Binaaripilkku Vähiten merkitsevä bitti (lsb) B n B n -1 B 2 B 1 B 0, B -1 B -2 B -3 B -m Tulkinta: B = B n 2 n + B n -1 2 n -1 + + B 2 2 2 + B 1 2 1 + B 0 2 0 + B -1 2-1 + B -2 2-2 + B -3 2-3 + + B -m 2-m 2? 4 Esimerkkejä: Sananpituus on on 16 16 bittiä bittiä ja ja kokonaisosan pituus pituus 10 10 bittiä. bittiä. Esitä Esitä etumerkittömät kiinteän pilkun pilkun luvut luvut 0,1, 0,1, 100,10101 ja ja 11110000,111 0,1 0,1 0000000000,100000, 100,10101 0000000100,101010 11110000,111 0011110000,111000
Digitaalitekniikan matematiikka Luku 9 Sivu 11 (26) 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 Etumerkitön kiinteän pilkun luku: 0 0 0 1 0 1 0 1 1 1 0 0 1 1 0 0 msb Kokonaisosa Binaaripilkun Murto-osa paikka, sama kaikilla luvuilla Etumerkillä varustettu kiinteän pilkun luku: lsb 0 0 0 1 0 1 0 1 1 1 0 0 1 1 0 0 Merkkibitti msb Kokonaisosa Binaaripilkun Murto-osa paikka, sama kaikilla luvuilla lsb
Digitaalitekniikan matematiikka Luku 9 Sivu 12 (26) Etumerkillä varustettujen binaarilukujen esitysmuodot Etumerkki-itseisarvoesitys (sign-and-magnitude) tuttu 10-järjestelmästä monimutkaiset yhteen- ja vähennyslaskualgoritmit yksinkertainen kertolaskualgoritmi Yhden komplementtiesitys (1's complement) harvinainen suhteellisen yksinkertaiset yhteenja vähennyslaskualgoritmit ei esitetä tässä opintojaksossa Kahden komplementtiesitys (2's complement) yleisin esitystapa digitaalilaitteissa erittäin yksinkertaiset yhteen- ja vähennyslaskualgoritmit ± 1 s 2 s
Digitaalitekniikan matematiikka Luku 9 Sivu 13 (26) Positiivisten ja negatiivisten binaarilukujen esitys Positiivisten lukujen esitys merkkibitti = 0 samanlainen edellä mainituissa esitystavoissa 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 ehkä selkeämmin: kahden komplementtiesityksessä negatiivinen luku on vastaavan positiivisen luvun kahden komplementti
Digitaalitekniikan matematiikka Luku 9 Sivu 14 (26) 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 Esimerkki 1: 0110100 Luku Luku 0 1 1 0 1 0 0 Säilyvät Esimerkki 2: 1000111 Luku Luku 1 0 0 0 1 1 1 Säilyy Kääntyvät Kääntyvät 2:n 2:n kompl. kompl. 1 0 0 1 1 0 0 2:n 2:n kompl. kompl. 0 1 1 1 0 0 1
Digitaalitekniikan matematiikka Luku 9 Sivu 15 (26) Kahden komplementin kahden komplementti Komplementoimalla komplementti saadaan alkuperäinen luku uudelleen Jos tiedetään luvun kahden komplementti, alkuperäinen luku saadaan komplementoimalla se
Digitaalitekniikan matematiikka Luku 9 Sivu 16 (26) 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 Esimerkki: Muunna etumerkki-itseisarvomuotoiset binaariluvut A ja B kahden komplementtimuotoon ja kääntäen? 6 Etumerkki- Kahden itseisarvo komplementti A = 01100011 01100011 B = 10110010 11001110 Positiivinen - säilyy ennallaan Negatiivinen - suuruusosa komplementoidaan
Digitaalitekniikan matematiikka Luku 9 Sivu 17 (26) Binaarilukujen esitys eri esitystavoissa Desimaali- Etumerkki- Kahden luku luku itseisarvo komplementti + 7 0111 0111 0111 0111 + 6 0110 0110 0110 0110 + 5 0101 0101 0101 0101 + 4 0100 0100 0100 0100 + 3 0011 0011 0011 0011 + 2 0010 0010 0010 0010 + 1 0001 0001 0001 0001 + 0 0000 0000 0000 0000 -- 0 1000 1000 -- -- 1 1001 1001 1111 1111 -- 2 1010 1010 1110 1110 -- 3 1011 1011 1101 1101 -- 4 1100 1100 1100 1100 -- 5 1101 1101 1011 1011 -- 6 1110 1110 1010 1010 -- 7 1111 1111 1001 1001 -- 8 -- 1000 1000 ± 2 s
Digitaalitekniikan matematiikka Luku 9 Sivu 18 (26) 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 suuruus ei saa muuttua muunnoksessa Luvun etumerkki ei saa muuttua muunnoksessa 16 32
Digitaalitekniikan matematiikka Luku 9 Sivu 19 (26) Kahden komplementtimuotoisten positiivisten lukujen sananpituuden muunnos Lyhennys poistetaan alusta nollia eli merkkibittejä Pidennys lisätään alkuun nollia eli merkkibittejä + Merkkibitti Suuruus 0 0 1 1 1 0 1 0 (+58 10 ) 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 (+58 10 ) Merkkibitti Suuruus
Digitaalitekniikan matematiikka Luku 9 Sivu 20 (26) Kahden komplementtimuotoisten negatiivisten lukujen sananpituuden muunnos Lyhennys poistetaan alusta ykkösiä eli merkkibittejä Pidennys lisätään alkuun ykkösiä eli merkkibittejä Merkkibitti Suuruus? 7 1 1 0 0 0 1 1 0 (-58 10 ) 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 (-58 10 ) Merkkibitti Suuruus
Digitaalitekniikan matematiikka Luku 9 Sivu 21 (26) Liukuvan pilkun luvut (liukuluvut), 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 10 26, -7,24685 10-18, -0,10025 10 36 Liukuvan pilkun luvuilla laskemiseen prosessoreissa on erityinen laskentayksikkö (floating point unit, FPU)
Digitaalitekniikan matematiikka Luku 9 Sivu 22 (26) Liukuvan pilkun lukujen esitystapa Käytettävissä oleva bittimäärä jaetaan kolmeen osaan merkkibitti s (sign bit) eksponentti e (exponent, characteristic) mantissa f (fraction, mantissa, argument) Luvun arvo v saadaan yleensä kaavasta v = (-1) s 2 e-b 1,f eräissä tapauksissa kaavasta v = (-1) s 2 e-b 0,f Esimerkki: 32-bittisen liukuluvun esitys Significand, 8 bittiä 23 bittiä s e f Eksponentti Merkkibitti Mantissa
Digitaalitekniikan matematiikka Luku 9 Sivu 23 (26) 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 e max = 255 b = 127 0 e 255-126 e - b 127 Mantissa esitetään itseisarvomuodossa eikä käytetä kahden komplementtiesitystä,
Digitaalitekniikan matematiikka Luku 9 Sivu 24 (26) ANSI/IEEE:n liukuvan pilkun lukujen standardi ANSI/IEEE:n standardi 754 ensimmäinen versio vuonna 1985 nykyinen versio 754-2008 Laaja ja yksityiskohtainen ANSI/IEEE Std Std 754-2008 Määrittelee esitystavat, muunnokset niiden välillä ja laskutoimitukset Määrittelee erikoislukuarvojen esityksen, esim + ja - Määrittelee poikkeustilanteet (esim. 0/0) ja niissä annettavat tulokset poikkeustilanteen tulos on usein NaN (Not a Number) Versio 2008 sisältää liukuvan pilkun lukujen esityksen sekä binaarilukuina että kymmenjärjestelmän lukuina Laajassa käytössä tietokoneissa ja mikroprosessorien liukuvan pilkun laskentayksiköissä Tavoitteena on, että eri valmistajien prosessorit ja tietokoneet esittävät liukuvan pilkun luvut ja laskevat niillä täsmälleen samalla tavalla,
Digitaalitekniikan matematiikka Luku 9 Sivu 25 (26) ANSI/IEEE:n standardin 754-2008 perusesitystavat Seitsemän perusesitystapaa kaksi vain lyhyiden lukujen tallentamiseen kolme binaarimuotoista laskemiseen, binary32: 32 bittiä: s + 8 e + 23 f binary64: 64 bittiä: s + 11 e + 52 f binary128: 128 bittiä: s + 15 e + 112 f kaksi desimaalimuotoista laskemiseen (g- ja t-kentät määrittelevät yhdessä eksponentin ja mantissan) decimal64: 64 bittiä: s + 13 g + 50 t decimal128: 128 bittiä s + 17 g + 110 t binary binary 32 32 binary binary 64 64 binary binary 128 128 Suurin luku 2 128 3,4 10 38 2 1024 1,8 10 308 2 16384 1,2 10 4932 Itseisarvoltaan pienin tarkka luku ( 0) 2-126 1,2 10-38 2-1022 2,2 10-308 2-16382 3,4 10-4932 Esitystarkkuus 24 b 7 10-j. num. 53 b 16 10-j. num. 113 b 34 10-j. num.
Digitaalitekniikan matematiikka Luku 9 Sivu 26 (26) Yhteenveto Digitaalitekniikassa käytetään lukujärjestelmiä, joiden joiden kantaluvut ovat ovat 10, 10, 2, 2, 8 ja ja 16 16 Kantaluku voidaan esittää esittää joko joko alaindeksillä, kirjaimella luvun luvun perässä tai tai etuliitteellä Binaariluvut esitetään digitaalilaitteissa määrämittaisissa rekistereissä kokonais-, kiinteän pilkun pilkun tai tai liukuvan pilkun pilkun lukuina etumerkittöminä tai tai etumerkillä varustettuina lukuina lukuina etumerkki-itseisarvo- tai tai komplementtiesitystä käyttäen Yleisin Yleisin binaarilukujen esitysmuoto on on kahden komplementtiesitys Siinä Siinä lukujen lukujen yhteen- yhteen- ja ja vähennyslasku on on erittäin yksinkertainen Muunnos etumerkki-itseisarvoesityksen ja ja kahden kahden komplementtiesityksen välillä välillä on on yksinkertainen Kahden komplementtimuotoisen luvun luvun sananpituutta voidaan muuttaa Liukuvan pilkun pilkun esityksellä voidaan esittää esittää hyvin hyvin laaja laaja lukualue kohtullisella bittimäärällä, yleisin yleisin esitys esitys on on ANSI/IEEE-standardiesitys