110 likes | 286 Views
LUKU- JA MERKKIKOODIT. UTF-8. Gray. ISO 8859. BCD. ASCII. Unicode. ISO 10646 (UCS). UCS-2. Johdanto. Tässä luvussa esitetään kymmenjärjestelmän lukujen eli BCD -lukujen esitystapoja digitaalilaitteissa ja lisäsisältönä NBCD -lukujen yhteenlaskualgoritmi
E N D
LUKU- JA MERKKIKOODIT UTF-8 Gray ISO 8859 BCD ASCII Unicode ISO 10646 (UCS) UCS-2
Johdanto Tässä luvussa • esitetään kymmenjärjestelmän lukujen eli BCD-lukujen esitystapoja digitaalilaitteissa ja lisäsisältönä NBCD-lukujen yhteenlaskualgoritmi • esitellään erityisesti muuttuvien signaalien koodaukseen soveltuvat Gray-koodit • esitetään tärkeimmät merkkien, kuten kirjainten ja muiden kirjoituksessa käytettävien merkkien koodaamiseen käytettävät merkkikoodit Luvun tavoitteena on • antaa käsitys muiden lukujen kuin binaarilukujen esittämisestä digitaalilaitteissa • tutustuttaa tärkeimpiin merkkikoodeihin ja niiden ominaisuuksiin
Kymmenjärjestelmän lukujen esitys digitaalilaitteissa • Joissakin tapauksissa on edullista käyttää lukujen esitykseen 10-järjestelmää eikä 2-järjestelmää • syöttö ja tulostus 10-järjestelmässä • vain vähän tai ei ollenkaan laskentaa • Tällöin koodataan 10-järjestelmän luvut numeroittain • Koodeja nimitetään BCD-koodeiksi (Binary Coded Decimal) • Tarvitaan vähintään neljä bittiä (23 = 8, 24 = 16) • Erilaisia 4-bittisiä BCD-koodeja on noin 76 000 000 • Yleisin on NBCD-koodi (Natural BCD); usein tätä nimitetään BCD-koodiksi • NBCD-koodissa kymmenjärjestelmän numeroa vastaa sen binaariesitys neljällä bitillä BCD
NBCD-koodi NBCD-koodit Numero Koodi 00000 1000120010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 • Koodisanat 1010 ... 1111 eivät ole käytössä. • Moninumeroiset kymmenjärjestelmän luvut esitetään kirjoittamalla numeroiden BCD-koodit peräkkäin Esimerkki: 18510 = 0001 1000 0101NBCD(= 101110012) • Luvun BCD-esityksessä on lähes aina enemmän bittejä kuin sen binaari- • esityksessä ? 1 NBCD
Gray-koodit 1 • Keskeinen ominaisuus: koodisanasta seuraavaan vain yksi bitti muuttuu • Käytetään mm. muuttuvien analogiasuureiden digitalisoinnissa • Vältetään binaarikoodia käytettäessä syntyvät virhetilanteet koodisanan muuttuessa • Esimerkki: Akselin asennon osoitus koodikiekolla • binaarikoodissa haluttu muutos 11 00: virhe 11 10 00 • Gray-koodissa haluttu muutos 10 00: ei virhettä GRAY 1 1 1 1 1 0 0 0 Virhe! Anturit oikein Anturit sivussa Anturit oikein Anturit sivussa Binaarikoodi Gray-koodi
Gray-koodit 2 Gray-koodeja 1-bittinen 2-bittinen 3-bittinen 4-bittinen 0 00 000 0000 1 01 001 0001 11 011 0011 10 010 0010 110 0110 111 0111 101 0101 100 0100 1100 1101 1111 1110 1010 1011 1001 1000 • Koodisanojen määrä ja pituus valittavissa • Koodisanojen määrää lisätään peilaamalla • Koodisanojen määrä voi olla mikä tahansa parillinen luku 1. Peilataan ? 2 GRAY 2. Lisätään bitti
Merkkikoodit • Digitaalilaitteissa esitetään erilaisia merkkejä, kuten • kirjaimia • numeroita (muutoin kuin binaarilukuina) • erikoismerkkejä • puoligraafisia merkkejä • ohjausmerkkejä (ohjauskoodeja) • Esittämiseen käytetään merkkikoodeja (character code) • tiettyä merkkiä vastaa tietty koodi eli bittiyhdistelmä • koodin bittimäärä riippuu esitettävien erilaisten merkkien lukumäärästä: n:llä bitillä voidaan suoraan esittää enintään 2n merkkiä • koodin bittimäärä on perinteisesti sama kaikille merkeille • uusimmissa koodeissa käytetään yleisimmille merkeille lyhyempää esitystä (8 bittiä) kuin harvinaisemmille (16-32 bittiä) A b K Ä p ü Ω ы 1 2 3 4 5 6 7 8 9 0 ! & % [ ] = @ # <> CR LF FF SYN ESC ACK
ASCII-koodi • Perinteinen merkkikoodi on ASCII-koodi (American Standard Code for Information Interchange) eli ITU-aakkosto n:o 5 • 7 bittiä • 128 erilaista merkkiä • 32 ohjausmerkkiä • 10 numeroa • 26 isoa kirjainta • 26 pientä kirjainta • 34 erikoismerkkiä • ei sisällä skandinaavisia eikä muitakaan erikoiskirjaimia • kansallisia versioita olemassa: osa erikoismerkeistä korvattu kansallisilla kirjaimilla, esim. å, Å, ä, Ä, ö, Ö • sellaisenaan jäänyt pois käytöstä, mutta perusta uudemmille merkkikoodeille ASCII
ISO 8859 ISO 8859 -merkkikoodit • 8 bittiä, 256 merkkiä • Noin 15 eri versiota • Perusversio ISO 8859-1 eli ISO Latin 1 (ei sisällä €-merkkiä) • Uusi euroversio ISO 8859-15 eli ISO Latin 9 (sisältää €-merkin) • Myös mm. kyrillinen, kreikkalainen, arabiankielinen ja hepreankielinen versio • Numerot, kirjaimet ja erikoismerkit koodialueella 010-12710 (0016-7F16) kuten ASCII-koodissa • Ohjauskoodivaraus koodialueelle 12810-15910 (8016-9F16) • Kansallisia kirjaimia ja lisää erikoismerkkejä koodialueella 16010-25510 (A016-FF16) • Käytössä mm. mikrotietokoneissa • Linux-käyttöjärjestelmän oletusmerkistö on ISO Latin 1 • Windows-käyttöjärjestelmän koodisivu 1252 on lähes ISO Latin 1 Esittele koodi-taulukot
ISO 10646 Unicode ISO 10646 ja Unicode -merkkikoodit • ISO 10646 (UCS, Universal Character Set) • sisältää maailman valtakielissä käytettävät merkit ja lisäksi suuren määrän muita merkkejä • 16- ja 32-bittiset versiot (UCS-2 ja UCS-4), versiossa 10646:2003Amd2 (voimassa nyt) noin 100 000 merkkiä • uusia merkkejä lisätään jatkuvasti: Amd3 ja Amd4: 104 675 merkkiä • Unicode UTF-koodit (UTF = Unicode Transformation Format) • Unicode-konsortion kehittämä merkkikoodi, nykyinen versio 5.1.0, jossaon yli 100 000 merkkiä • nykyään yhteensopiva ISO 10646 -koodin kanssa • monipuolisempi kuin ISO 10646 • keskeiset koodityypit UTF-8, UTF-16 ja UTF-32 • UTF-8 käyttää ASCII-koodin mukaisiin merkkeihin 8 bittiä ja muihin merkkeihin joko 16 tai 32 bittiä • UTF-16 käyttää merkkeihin joko 16 tai 32 bittiä • UTF-32 käyttää merkkeihin aina 32 bittiä
Yhteenveto • Lukuja esitetään digitaalilaitteissa myös BCD-koodattuina kymmenjärjestelmän lukuina • Tärkein BCD-koodi on NBCD-koodi, mutta muitakin koodeja käytetään niiden eri tilanteisiin sopivien ominaisuuksien takia • NBCD-lukujen yhteenlasku tehdään kahdessa vaiheessa NBCD-summaimella • Gray-koodeissa vain yksi bitti muuttuu koodisanasta seuraavaan siirryttäessä • Merkkikoodeilla esitetään kirjaimia, numeroita, erikoismerkkejä, puoligraafisia merkkejä ja ohjausmerkkejä • Keskeisiä merkkikoodeja ovatASCII-koodi, ISO 8859-koodit sekä ISO 10646-koodi ja Unicode