7. Tiedon esittäminen 7.1. Tieto bittimuodossa 7.2. Binääriluvut

Slides:



Advertisements
Samankaltaiset esitykset
Tietokonetekniikka 4 Tieto ja tiedon talletus
Advertisements

JavaScript (c) Irja & Reino Aarinen, 2007
Virheen havaitseminen ja korjaus
Tietoturvallisuus osa 7
Näytölle tulostaminen. 7.2 Sisällys System.out.println - ja System.out.print -operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden.
Vaasan yliopisto Tietojenkäsittely TiTe.1020 Tiedon esitysmuoto E-Commerce 2010: Business, Technology, Society 6e Prentice Hall © 2010.
C-ohjelmointi, kevät 2006 Taulukot Binääritiedostot Luento
KERTAUSTA PERUSASTEEN MATEMATIIKASTA Piia junes
TyyppimuunnoksettMyn1 Tyyppimuunnokset Joskus kääntäjän on tehtävä itse päätöksiä, jos ohjelmoija ei ole ajatellut yksityiskohtia: int arvo1=10; long arvo2=25;
Tiedon esittäminen.
Visual Basic -ohjelmointi
Tiedostomuodot Jussi Talaskivi atk-suunnittelija Jyväskylän yliopisto.
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op ALU.
Tietotyypit Tietotyyppi määrittää muuttujan sisältämän datan luonnetta, muistista tarvittavaa tilaa ja sitä, millaisia operaatioita siihen voidaan kohdistaa.
SQL Standardoitu kieli, jonka avulla voidaan
6. Muuttujat ja Java.
Johdatus ohjelmointiin – C kielen peruselementit Tutkijayliopettaja Manne Hannula Opetusharjoittelu (ohjaava opettaja Jukka Jauhiainen)
Tietokoneen rakenne matalalla tasolla KYMENLAAKSON AMMATTIKORKEAKOULU Jarkko Ansamäki, kevät 2002.
Visual Basic -ohjelmointi
Liukulukulaskenta. Yleistä liukuluvuista Tarvitaan reaalilukujen esittämiseen tietokoneella  esim. matemaattiset mallit Kaikkia reaalilukuja ei ole mahdollista.
Kiikuista jatkoa.
Aiheet ● Ohjelmointikielten kääntäminen ● Kieliopin määrittely ● Kääntäjän toiminta.
KOKEESEEN KERTAAMINEN. ENNEN LUKEMISTA  Herätä kiinnostuksesi:  Mieti, mikä sinua kiinnostaa luettavassa  Mihin tarvitset tietoa, jota olet ryhtymässä.
Pilkku Kotilainen, Liedes, Luttinen, Meriläinen.  Pääsääntönä on, että virkkeen lauseet erotetaan toisistaan yleensä pilkulla.  Päälause erotetaan sivulauseesta.
Opettajan esitysaineisto kurssi 1 kappaleet 1–4. 2 Arviointia ja laskemista.
1 Pardian uudet verkkopalvelut Yleisesittely Pardian koulutus/SM.
KANSALLISKIRJASTO - Kirjastoverkkopalvelut Automaattisia korjauksia Melindassa Ulla Ikäheimo Melinda-talonmiehen tuokio
Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö.
Matematiikkaa 3 a Kertausjakso – Laskuja MATEMATIIKKAA 3A, KERTAUSJAKSO LASKUJA © VARGA–NEMÉNYI RY 2016.
Vuokaaviot. 2.2 Sisällys Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan toistaminen silmukalla. Esimerkkejä: − algoritmi.
6. Muuttujat ja Java.
Matematiikkaa 3b © Varga–Neményi ry 2017
6. Muuttujat ja Java.
Yleistajuisemman artikkelin kirjoittaminen
Kuusela: Tietoaika Lähde: Kuusela 2000: 57.
13. Pakkaukset.
Poikkeustenkäsittelylohkot try-catch
17. Javan omat luokat.
8. Näppäimistöltä lukeminen
Siirtorekisterin toteutus Javalla
Määritä särmiön tilavuus
Toinen harjoitustyö ASCII-grafiikkaa.
Lyh. Lyhenteet RUK tsto Miksi ja miten?
15. Lohkot.
TIETOTURVA.
Selkokieli sisällöltään, sanastoltaan ja rakenteeltaan yleiskieltä helpommin luettavaa ja ymmärrettävää kieltä henkilöille, joilla on vaikeuksia lukemisessa tai.
SUUREET JA MITTAAMINEN
7. Näytölle tulostaminen
Murtoluku Murtoluku on jakolasku, jota ei ole laskettu loppuun asti.
9. Aritmeettiset operaatiot
8. Näppäimistöltä lukeminen
10. Javan ohjausrakenteet
9. Aritmeettiset operaatiot
11. Javan valintarakenteet
15. Lohkot.
Palauta 4 tehtävää, Viimeistään klo 23
4. Attribuutit.
7. Hyvä ohjelmointitapa..
Tietokoneen toiminta (2 ov)
KVANTISOINTIKOHINA JA AWGN-KOHINAN vaikutus PULSSIKOODIMODULAATIOSSA
7. Näytölle tulostaminen
6. Muuttujat ja Java.
Vapaaohjelman arvostelulomakkeen täyttäminen
Tietokoneen toiminta (2 ov = 4 op)
3. TTK-91-käskykanta Symbolisen konekielen tavalliset käskyt
Kurssin tavoitteet Miksi? Keskeiset asiat
Luku 12 Java-ohjelmien suoritus
Oppijanumero ja käyttäjien yksilöinti
TIETO JA TIETOKONEOHJELMA
Dynamic Reporting (DR) -raporttien teon parhaat käytännöt
Esityksen transkriptio:

7. Tiedon esittäminen 7.1. Tieto bittimuodossa 7.2. Binääriluvut 7.3. Lukujen esitys 7.4. Muun datan esitys 7.5. Käskyn esittäminen 21/09/2018 Liisa Marttinen kevät 2005

7.1 Tieto bittimuodossa Kaikki tietokoneessa esitettävä tieto on binäärimuodossa eli binääribitteinä 0 ja 1 esitettynä sekä käskyt että käsiteltävä data helppo toteuttaa piireillä helppo suunnitella logiikka Boolen algebran avulla Tieto sijaitsee muistissa, joka on jaettu sanoihin sana 32 bittiä (64 bittiä, 16 bittiä,..) sana koostuu yleensä 8 bitin tavuista 110110100 21/09/2018 Liisa Marttinen kevät 2005

Tiedon tyypit ihmisten kommunikoinnissa laitteiston sisäinen talletus ääntä, kuvaa, merkkejä, .. laitteiston sisäinen talletus erilaisia koodaustapoja: merkeille, kuville, luvuille, äänelle, ohjelmille, … suorittimelle tyyppi on eri tyyppi vain, jos sen käsittelyyn on omat konekäskyt kokonaisluvut ja liukuluvut yleensä kaikissa totuusarvot ja merkit joissakin konekäskyt 21/09/2018 Liisa Marttinen kevät 2005

Tiedon esitys On luotava säännöt tiedon koodaamiselle biteiksi numerot teksti kuvat ja piirrokset ääni, liikkuva kuva Hyvin paljon erilaisia koodausmenetelmiä ongelmia esitysmuotojen ymmärtämisen kanssa 21/09/2018 Liisa Marttinen kevät 2005

tietokonesana: 2, 4 tai 8 tavua bittien numerointi Bittiesitys bitti: 0 tai 1 tavu: 8 bittiä pienin kerrallaan osoitettava tietomäärä tietokonesana: 2, 4 tai 8 tavua kaksoissana bittien numerointi vähiten merkitsevä eli oikeanpuolinen bitti on 0. bitti vähiten merkitsevä eniten merkitsevä bitti 10110001000111 bitti

Tavujen järjestys sanassa tätä ei ole standardoitu! ‘big endian’ alkaa vasemmalta ‘little endian’ alkaa oikealta aiheuttaa ongelmia tiedon siirrossa 1 2 3 4 4 3 2 1 big endian little endian 21/09/2018 Liisa Marttinen kevät 2005

Datan esitys Lausekielisissä ohjelmissa tietoa käsitellään aina muuttujien avulla Muuttujalla on tyyppi esim. kokonaisluku, realiluku, merkki arvo Muuttujan arvo on muistin sanassa (tai sanoissa) binäärimuodossa. Tyyppi määrää bittijonona esitetyn arvon tulkintatavan. 21/09/2018 Liisa Marttinen kevät 2005

32 bitin sana muistissa voi olla esim. 0101001001000101100010101001110 32 bitin kokonaisluku kaksi 16 bitin kokonaislukua neljä ASCII-merkkiä käsky reaaliluku jne. 21/09/2018 Liisa Marttinen kevät 2005

Binäärimuodossa oleva tieto tulkitaan yksinomaan sitä käsittelevän käskyn perusteella. symbolinen konekieli sallii kirjaimiksi tarkoitettujen merkkijonojen yhteenlaskun monet lausekielet tarkastavat, että muuttujaa käytetään vain tyypin kertomalla tavalla Kokonaislukujen, reaalilukujen, merkkien ja käskyjen esitys muistissa on otettu huomioon jo koneen suunnitteluvaiheessa Muiden tyyppien ja tietorakenteiden esitystapa määräytyy kielen ja laitteiston perusteella

Binäärijärjestelmä Lukujärjestelmissä kantaluku => numeromerkkien määrä 10-järjestelmä Eurooppaan keskiajan lopulla Babylonialaisilla 60-järjestelmä Mayoilla kantaluku 360 numeron paikka määrää numeron arvon 12345 => ykkösiä 5, kymmeniä 4, satoja 3, jne vrt. roomalaiset numerot bittiesityksen matemaattinen pohja binäärijärjestelmässä 21/09/2018 Liisa Marttinen kevät 2005

Binääriluvut numeerisen tiedon esitysmuoto kantaluku on 2 käytössä vain kaksi numeroa 0 ja 1 eli bitit 0 ja 1 helppo toteuttaa helppo erottaa toisistaan esim. 1101000.112 = 1*26+ 1*25 + 1*23 +1*2-1 + 1*2-2 = 64 + 32 + 8 + 1/2 + 1/4 = 104.7510 21/09/2018 Liisa Marttinen kevät 2005

Kymmenjärjestelmä => binäärijärjestelmä kokonaisosa jaetaan toistuvasti luvulla 2, kunnes osamäärä on 0 tulos saadaan poimimalla jakojäännökset käännetyssä järjestyksessä esim. 5910 = 1110112 59:2 = 29 jakoj. = 1 29:2 = 14 1 14:2 = 7 0 111011 7:2 = 3 1 3:2 = 1 1 1:2 = 0 1

0.73 * 2 = 1.46 Desimaaliosa kerrotaan toistuvasti luvulla 2. Tulos saadaan merkitsemällä ylös kokonaisosat saadussa järjestyksessä esim. 0.7310 ~ 0.10111012 0.73 * 2 = 1.46 0.46 * 2 = 0.92 1011101 0.92 * 2 = 1.84 0.84 * 2 = 1.68 0.68 * 2 = 1.36 0.36 * 2 = 0.72 0.72 * 2 = 1.44 …….

Esimerkki: Kymmenjärjestelmän luku 98.375 binääriluvuksi kokonaisosa 98 desimaaliosa .375 tulos: 1100010.011 21/09/2018 Liisa Marttinen kevät 2005

Kymmenjärjestelmä => binäärijärjestelmä (toinen tapa) Suoraan binäärijärjestelmän avulla vähennetään toistuvasti 10-järjestelmän luvusta suurin mahdollinen kakkosen potenssi ja merkitään binääriluvussa sitä vastaamaan 1; muihin kohtiin 0. Pitää muistaa tai laskea kakkosen potenssit: 1, 2, 4, 8, 16, 32, 64, 128, .. 0.50, 0.25, 0.125, 0.0625, ... 21/09/2018 Liisa Marttinen kevät 2005

Esimerkki Desimaaliluku 98.375 binääriluvuksi 98.375 - 64 = 34.375 => 2^6 =1 34.375 - 32 = 2.375 => 2^5 =1 2.375 - 2 = 0.375 => 2^1 =1 0.375 - 0.25 = 0.125 => 2^-2 =1 0.125 - 0.125 = 0.00 => 2^-3 =1 => 1100010.011 21/09/2018 Liisa Marttinen kevät 2005

Oktaali- ja heksadesimaaliluvut Oktaalijärjestelmässä kantaluku on 8 ja numerot ovat 0,1,2, 3, 4, 5, 6 ja 7. Heksadesimaalijärjestelmässä kantaluku on 16 ja numerot ovat 0, 1, …, 9, A, B, C, D, E ja F. Esimerkki: 7 A 5. C 16-järjestelmä 0111 1010 0101. 1100 2-järjestelmä toisin ryhmiteltynä 011 110 100 101. 110 2-järjestelmä 3 6 4 5. 6 8-järjestelmä 21/09/2018 Liisa Marttinen kevät 2005

Esimerkki 98.375 = 1 1 0 0 0 1 0. 0 1 1 binäärilukuna 98.375 = 1 1 0 0 0 1 0. 0 1 1 binäärilukuna 0 01 100 010. 011 ryhmiteltynä 1 4 2 . 3 oktaalilukuna 0110 0010. 0110 ryhmiteltynä 6 2 . 6 heksades.lukuna 21/09/2018 Liisa Marttinen kevät 2005

oktaaliluku 1 4 2 . 3 => 001 100 010 . 011 binääriluku heksadesimaaliluku 6 2 . 6 => 0110 0010 . 0110 etu- ja loppunollilla ei ole merkitystä, kuten ei desimaalijärjestelmässäkään 21/09/2018 Liisa Marttinen kevät 2005

Tietotyypit lause- ja konekielissä Tietotyypeillä on arvoalue ja operaatioita Arvoalueeseen liittyy arvojen lukumäärä ja peräkkäisten arvojen väli MC 6800 (v.75): yksi tietotyyppi, 8-bitin kokonaisluku nykyään operaatioita 8-, 16- ja 32-bitin kokonais- ja liukuluvuille 21/09/2018 Liisa Marttinen kevät 2005

7.3 Lukujen esittäminen binäärimuotoisena etumerkittömät kokonaisluvut int (integer) (esim. Javan kokonaisluvut) talletetaan luvun arvo binäärilukuna sanaan (= 16 tai 32 bittiä) esim. 15 = 00 00 00 0E16 = 00000000 00000000 00000000 00001111 31 23 15 7 0 21/09/2018 Liisa Marttinen kevät 2005

Negatiivisten lukujen esittäminen Monta eri mahdollisuutta: Etumerkkibitti: ensimmäinen bitti tulkitaan etumerkiksi 1 = -, 0 = + (esimerkiksi näin) ja seuraavat bitit luvun itseisarvoksi 1101 = -3 0101 = +3 ongelma: -0 ja +0 -0 = 10000000, +0 = 00000000 ovat erilaiset 21/09/2018 Liisa Marttinen kevät 2005

Kahden komplementti kahden komplementtiesityksessä X = X positiiviset luvut esitetään sellaisenaan, mutta negatiiviset komplementtimuodossa: X = X -X = 2sananpituus - X = 232-X Kahden komplementtiesitys saadaan laitteistossa helposti muuttamalla luvun ykköset nolliksi ja nollat ykkösiksi ja lisäämällä lopuksi lukuun 1. 21/09/2018 Liisa Marttinen kevät 2005

Komplementtiesityksen hyödyt vähennyslasku toteutettavissa helposti yhteenlaskun tavoin vain yksi nolla - 0 = 11111111 + 1 ======== 100000000 = 0 8 bitillä luvut -128 … 127 16 bitillä luvut 32767 .. -32768 21/09/2018 Liisa Marttinen kevät 2005

Kahden komplementin muodostaminen 1. invertoidaan bitit (yhden komplementti) 2. lisätään ykkönen jos operaatio toistetaan saadaan alkuperäinen luku 41 = 00101001 - 41 ? invertoidaan => 11010110 lisätään 1 => 11010111 tarkistus: 00101000 +1 = 00101001 = 41 21/09/2018 Liisa Marttinen kevät 2005

Lisää esimerkkejä kahden komplementista Esitetään luvut -1510 ja -2410 kahdeksalla bitillä kahden komplementtina: -1510 = - 11112 = - 0000 1111 ----> 1111 0000 + 1 = 1111 0001 -2410 = - 110002 = - 0001 1000 ----> 1110 0111 + 1 = 1110 1000 21/09/2018 Liisa Marttinen kevät 2005

Yhteenlasku 15 + 2 = 17 binäärimuodossa: 15 = 1111 2 = + 10 15 = 1111 2 = + 10 ----------- 17 = 10001 21/09/2018 Liisa Marttinen kevät 2005

Lasketaan 24-15 ja 15-24 24 0001 1000 - 15 + 1111 0001 ------ ------------------ = 9 (1) 0000 1001 ylivuotobitti unohdetaan 15 0000 1111 - 24 + 1110 1000 ----- ------------------- - 9 1111 0111 -1 = 1111 0110 => - 0000 1001 = - 910 21/09/2018 Liisa Marttinen kevät 2005

Onko binääriluku 1101 -3 vai 13? alkaa ykkösellä, siis -3 0000 … 0111 positiivisia 1000 … 1111 negatiivisia Negatiivisten lukujen sijoittuminen: 0 1 2 3 4 5 6 7 -8 -7 -6 -5 -4 -3 -2 -1 21/09/2018 Liisa Marttinen kevät 2005

Reaaliluvut Reaaliluvut vastaavat tietokoneen liukulukuja. Reaalilukuja on suljetulla välillä ääretön (ylinumeroituva) määrä, mutta liukulukuja on vain äärellinen määrä ==> pyöristysvirheet ovat aina mukana laskuissa ja ne on otettava huomioon algoritmeissa Javan tyyppi float, muissa usein real 21/09/2018 Liisa Marttinen kevät 2005

Liukuluvut +/- 0.23 * 10-4 missä Liukuluku on muotoa +/- on etumerkki 0.23 on mantissa -> tarkkuus -4 on eksponetti -> arvoalue Esimerkissä kantaluku on 10. Tietokoneessa kantalukukin on 2:n potenssi! 21/09/2018 Liisa Marttinen kevät 2005

Yleensä liukuluku normeerataan: 1/kantaluku =< mantissa <1 Eksponentti käsitellään ilman etumerkkiä: Valitaan jokin vakio nollatasoksi Jos E on talletettu eksponentin arvo, M mantissa, S etumerkki (0 tai 1) ja N on nollataso, niin luku on (-1)S M * 2E-N Siis E >= 0 21/09/2018 Liisa Marttinen kevät 2005

IEEE:n standardi nollatasona on 127 IEEE:n yksinkertaisen tarkkuuden liukuluvun esitysstandardissa kantaluku on 2 ja mantissa on normeerattu välille 1 =< M < 2 eli mantissan 1. bitti on aina 1. Sitä ei siis tarvitse erikseen tallettaa => saadaan yksi bitti lisää mantissaan mutta se on otettava huomioon laskutoimituksissa nollatasona on 127 21/09/2018 Liisa Marttinen kevät 2005

Esimerkki koodauksesta 43.75 = 101011.11 binäärilukuna = 1.0101111 * 2^5 = 1.0101111 * 2^(132-127) 132 = 10000100 ==> bittijonoksi 0 10000100 01011110000… 0 S E: 8 b M: 23 b 21/09/2018 Liisa Marttinen kevät 2005

Esimerkki koodin purusta 0 10000110 011010 …0 Mantissa = 1.01101 E = 10000110 = 2^7 + 2^2 + 2^1 = 128 + 4 + 2 = 134 Nollatason vähennys 134-127 = 7 Siis luku on 1.011010 *2^7 = 10110100 = 2^7 + 2^5 + 2^4 + 2^2 = 128 + 32 + 16 +4 = 180 21/09/2018 Liisa Marttinen kevät 2005

7.3 Muun datan esittäminen Merkit Yhden merkin (Javan tyyppi char) tallettamiseen varattu tilaa esim. yksi tai kaksi tavua Merkeillä on oma binäärikoodinsa 7-bittinen ASCII: 128 merkkiä 8-bittinen ASCII: 256 merkkiä 8-bittinen ISO Latin: 256 merkkiä 16-bittinen Unicode: yli 65 000 merkkiä Koodit standardoitu 21/09/2018 Liisa Marttinen kevät 2005

Ohjelmointikielten tyypit kokonaislukujen, liukulukujen ja merkkien esitys on otettu huomioon jo koneen suunnittelussa ohjelmointikielen tyyppien, kuten totuusarvojen, taulukoiden, joukkojen jne. esittäminen ratkaistaan kääntäjässä 21/09/2018 Liisa Marttinen kevät 2005

Esimerkkejä: taulukot: alkiot riveittäin (yleensä) tai sarakkeittain tietueet: kentät peräkkäin totuusarvot: 0 = epätosi, 1 = tosi merkkijonot: ilmoitetaan jonon pituus tai loppuminen loppumerkillä 21/09/2018 Liisa Marttinen kevät 2005

Kuvat viiva- eli vektorikuvat: rasterikuvat kuva koostuu suorista ja käyristä (objekteista) nämä talletetaan sopivasti koodattuna: alku- ja loppupiste käyrän yhtälö alueiden värit rasterikuvat talletus bittikarttoina kustakin kuvan pisteestä väritieto 21/09/2018 Liisa Marttinen kevät 2005

Kuvatiedosto Kuvatiedoston alussa otsake talletusformaatin tunniste formaatti määrittää kuvan tarkkuuden, ‘laadun’ tieto värien valinnasta eli mikä ns. paletti RGB on yleinen värien esitystapa, siinä värit esitetään kolmella perusvärillä esim. (0,0,0) musta, (256,256,256) valkea ja (256, 0, 256) violetti täysvärikuva: 24- tai 48-bittinen 21/09/2018 Liisa Marttinen kevät 2005

Kuvat yleensä pakataan GIF-menetelmä (Graphic Interchange Format) maks. 256 väriä JPEG-menetelmä (Joint Photographic Experts Group) 16 miljoonaa väriä, tehokas TIFF-menetelmä (Tag Image File Format) korkealaatuisia täysvärikuvia BMP (Bit Map Picture) MS Windows 21/09/2018 Liisa Marttinen kevät 2005

Videokuva talletetaan yksittäisten kuvien sarjana ( esim. 25 kuvaa/s) sekunti pakkaamatonta hyvälaatuista videokuvaa 20 MB seuraava kuva poikkeaa edellisestä vain vähän pakkausta voidaan tehostaa tallettamalla vain muutokset 21/09/2018 Liisa Marttinen kevät 2005

Esimerkkejä videostandardeista MPEG (Moving Pictures Experts Group) ISO:n standardi, eri versioita AVI (Audio Visual Interleave) MS Windows MOV INDEO, FLI, GL,.. 21/09/2018 Liisa Marttinen kevät 2005

Äänen esitys Kaksi perusvaihtoehtoa Syntetisoitu ääni täydellinen äänidats Syntetisoitu ääni MIDI-käskyjä (Music Instrument Digital Interface) “Soita nuotti N voimakkuudella X” äänikorteissa yleensä General-Midi -standardia 21/09/2018 Liisa Marttinen kevät 2005

Täydellinen äänidata PCM-koodaus ääninäytteitä taajuudella 44.1 kHz eli 44100 kertaa sekunnissa näyte kvantisoidaan koodataan esim. 16 bitillä 21/09/2018 Liisa Marttinen kevät 2005

Esimerkkejä äänistandardeista MIDI WAV (Wave Form Audio File Format) MS Windows AU (ULAW) NeXt-kone 21/09/2018 Liisa Marttinen kevät 2005

7.4. Käskyjen esitys RISC-kone (Reduced Instruction Set Computer) Kullakin koneella oma käskykanta. Käskyn esitys muistissa on konekohtainen, ei standardoitu RISC-kone (Reduced Instruction Set Computer) mahdollisimman vähän käskyjä ja vain yksinkertaisia tietotyyppejä RISC 1: 31 käskyä CISC-kone (Complicated Instruction Set Computer) runsas käskykanta VAX: noin 340 käskyä. Intel: noin 200 käskyä 21/09/2018 Liisa Marttinen kevät 2005

Kaikissa järjestelmissä käskyssä erotetaan: RISC-ohjelmat n. 70% pitempiä, mutta suoritusaika lyhempi kuin CISC-koneissa. Kaikissa järjestelmissä käskyssä erotetaan: operaatiokoodi suoritettava toiminto + loppuosan tulkinta operandit tyyppi sijainti Saman koneen käskyt voivat olla eri pituisia 21/09/2018 Liisa Marttinen kevät 2005

7.5. Tiedon muuttumattomuus Bitti voi muuttua muistissa tai tiedonsiirrossa. muistipiirissä oleva vika voi aiheuttaa virheen (staattinen) pölyhiukkanen tms. voi aiheuttaa virheen (transientti) virhe, jota ei korjata, voi aiheuttaa häiriön Virheiden havaitsemista varten sanomassa tai tiedossa on ylimääräisiä bittejä. Ylimääräisten bittien avulla laitteisto (esim. muisti) voi suorittaa tarkistuksia. Yleisessä tapauksessa ei tiedon oikeellisuutta voi tarkastaa! 21/09/2018 Liisa Marttinen kevät 2005

Esimerkkejä tarkistusmerkeistä ohjelmallisesti tarkistettavia henkilötunnus: 020699-116D 20699116 MOD 31 = 13 (=jakojäännös) viimeinen merkki saadaan jakojäännöksestä 0123456789 ABCDEFGHJK LMPRSTUVWZ Y 0 5 10 13 19 30 020699-114D huomataan virheelliseksi 21/09/2018 Liisa Marttinen kevät 2005

tarkistusmerkki auttaa havaitsemaan virheen voidaan aina havaita yhden merkin virhe jos useampi muuttuu, niin sitä ei enää välttämättä havaita virhettä ei voida korjata ei tarkasteta henkilötunnuksen välimerkkiä (-, +, A) 020699-114D Kumpi on väärin? Vai onko joku muu merkki väärin? 21/09/2018 Liisa Marttinen kevät 2005

Bittitason tarkistukset muistipiirit, väylät, tiedonsiirrot Monenko bitin muuttuminen havaitaan? Monenko bitin muuttuminen pystytään korjaamaan? Paljonko ylimääräisiä bittejä tarvitaan havaitsemiseen ja korjaamiseen kuluttaa muistitilaa lisää piuhoja väylään Tehdäänkö tarkistukset laitteisto- vai ohjelmistotasolla hetu: 1 hetu: 0 hetu n. 10% hetu: ohjelmistotasolla 21/09/2018 Liisa Marttinen kevät 2005

Pariteetti tavun tai sanan 1-bittien lukumäärän on oltava aina parillinen (parillinen pariteetti) pariton (pariton pariteetti) ylimääräinen pariteettibitti: 1 tai 0 siten, että ehto täyttyy havaitsee yhden bitin muuttumisen, ei havaitse kahden bitin muuttumista ei pysty korjaamaan virhettä 1011 0111 0110 1100 21/09/2018 Liisa Marttinen kevät 2005

Hamming-etäisyys Montako bittiä jossain koodijärjestelmässä täytyy muuttua, jotta saadaan laillinen koodi Esim. ISO Latin-9 A = 0100 0001 B = 0100 0010 C = 0100 0011 2 bittiä 1 bitti Hamming –etäisyys on 1. Pariteettibitin kanssa etäisyys on 2. Yleensä todennäköisyys kahden bitin virheelle on paljon pienempi kuin yhden bitin virheelle! 21/09/2018 Liisa Marttinen kevät 2005

Virheen korjaava Hamming-koodi B C 1 A B C 1 A B C 1 1 Luku: 1100 Tarkistusbitit lisättynä Bitti muuttunut Kukin databitti kuuluu erilaisiin pariteettijoukkoihin. Koska on 4 databittiä, tarvitaan 3 pariteettibittiä. Virheen havainneet pariteettijoukot pystyvät korjaamaan virheen.

Hammingin koodi Käytetään useita pariteettibittejä kaikki kakkosen potenssit eli bitit 1, 2, 4, 8, 16, 32 jne. ovat pariteettibittejä kullakin pariteettibitillä tarkastetaan vain tiettyjen bittien oikeellisuutta n. bittiä tarkistavat ne pariteettibitit, joiden summa on n esim. 7. bittiä tarkistavat pariteettibitit 1, 2 ja 4. => tarkistusbitti 1 tarkistaa kaikki parittomien paikkojen bitit ja tarkistusbitti 2 kaikki parillisten paikkojen bitit (tarkistusbittejä ei oteta huomioon!) 21/09/2018 Liisa Marttinen kevät 2005

käytetään parillista pariteettia tarkistuksessa lasketaan ykkösten lukumäärät uudelleen kullekin tarkistusbitille ottaen mukaan myös ko. tarkistusbitti ‘virheelliset’ tarkistusbitit kertovat, missä bitissä virhe on tapahtunut esim. tarkistusbittejä 1 ja 4 laskettaessa ei saatu parillista ykkösten määrää => 5. bitti on virheellinen yksi virheellinen bitti pystytään korjaamaan! kaksi virheellistä havaitaan 21/09/2018 Liisa Marttinen kevät 2005

data + pariteettibitit 1 2 3 4 5 6 7 8 9 0 10 11 12 13 14 15 16 pariteettibittien paikat ? ?0? 100 ? 1011 1 1 1 1 ? databittien paikat 21/09/2018 Liisa Marttinen kevät 2005

Kukin pariteettibitti tarkistaa vain tiettyjen bittien muuttumattomuutta: sijaintipaikassa n olevaa bittiä tarkastavat ne pariteettibitit, joiden summa on n: n= 7 = 111 eli summa on 1 + 2 +4 => pariteettibitit paikoissa 1, 2 ja 4 tarkistavat paikassa 7 olevaa bittiä. n=10 = 1010 eli summa on 2+8 => tätä bittiä tarkastavat pariteettibitit paikoissa 2 ja 8.

Esimerkki: data = 1001 0101 1 2 3 4 5 6 7 8 9 10 11 12 ? ? 1 ? 0 0 1 ? 0 1 0 1 pariteettibitti 1 varmistaa kaikki parittomissa paíkoissa olevat bitit : =>P1= 0 pariteettibitti 2 varmistaa paikoissa 2, 3, 6, 7, 10, 11 olevat bitit : =>P2 =0 pariteettibitti 4 varmistaa paikoissa 4, 5, 6, 7 ja 12 olevat bitit => P4= 0 pariteettibitti 8 varmistaa paikoissa 8, 9, 10, 11, 12 olevat bitit => P8 =0 21/09/2018 Liisa Marttinen kevät 2005

1 2 3 4 5 6 7 8 9 10 11 12 0 0 1 0 0 1 1 0 0 1 0 1 P2 + 3 +6 + 7 +10 +11 => pariton lukumäärä ykkösiä! P4 + 5 +6 +7 +12 => pariton lukumäärä ykkösiä P1 ja P8 antavat parillisen määrän eli niiden tarkistamissa paikoissa ei ole virheitä. Koska P2 ja P4 ilmoittavat virheestä => virheellinen bitti on paikassa 2 + 4 = 6.

Tiedonsiirto CRC (Cyclic Redundancy Check) tarkistusmerkit lasketaan siirrettävästä tiedosta ja siirretään tiedon perässä vastaanottaja tarkastaa koko saamansa sanoman (= varsinainen tieto + tarkistusmerkit) ja havaitsee, onko tapahtunut virhettä vai ei voimakas virheenpaljastusmenetelmä 21/09/2018 Liisa Marttinen kevät 2005