Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Tiedon esitys tietokoneessa

Samankaltaiset esitykset


Esitys aiheesta: "Tiedon esitys tietokoneessa"— Esityksen transkriptio:

1 Tiedon esitys tietokoneessa
Tietotekniikan perusteet Pekka Orponen

2 Määritys - menetelmä - toteutus
Tärkeä käsitteellinen erottelu: Tehtävän määritys (spesifikaatio): kuvaus siitä, mihin lähtötietoihin (syötteisiin) liittyvät mitkä tulostiedot (vasteet) kuvaustapaa ei rajoitettu esim. yhteenlaskutehtävän määritys: merk. numerojonon a = anan-1…a0 arvoa v(a) = a0 + 10a1 + … + 10nan syöte: numerojonot a = anan-1…a0 ja b = bnbn-1…b0 tulos: numerojono z = znzn-1…z0, jolla v(z) = v(a) + v(b) Tehtävän ratkaisumenetelmä (algoritmi): täsmällinen kuvaus siitä, miten tehtävä ratkaistaan kuvaustapa vapaa, kuitenkin niin tarkka että menetelmää voidaan seurata mekaanisesti

3 Määritys - menetelmä - toteutus (jatkuu)
esim. yhteenlaskun ”peruskoulualgoritmi” Laske summa s0 = v(a0) + v(b0). Jos s0 < 10, niin aseta: z0 = se numero, jolla v(z0) = s0, c1 = ”0” (muistinumero); jos taas s0 ³ 10, niin aseta: z0 = se numero, jolla v(z0) = s0 - 10, c1 = ”1” (muistinumero). Laske summa s1 = v(a1) + v(b1) + v(c1). Jos s1 < 10, niin aseta: z1 = se numero, jolla v(z1) = s1, c2 = ”0” (muistinumero); jos taas s1 ³ 10, niin aseta: z1 = se numero, jolla v(z1) = s1 - 10, c2 = ”1” (muistinumero). Toista askel 4 indeksin arvoilla 2..n. Lopuksi: jos cn+1 = ”1”, niin aseta zn+1 = ”1”.

4 Määritys - menetelmä - toteutus (jatkuu)
Ratkaisumenetelmän toteutus (implementaatio): menetelmän esitys jossakin koneellisesti ymmärrettävässä muodossa, esim. jollakin ohjelmointikielellä esim. peruskouluyhteenlasku C-ohjelmana: int a[n], b[n], z[n+1]; void add(int *a, int *b, int *z) { int i, s, c; c = 0; for (i = 0; i <= n; i++) { s = a[i] + b[i] + c; if (s < 10) {z[i] = s; c = 0;} else {z[i] = s-10; c = 1;} }; if (c == 1) z[n+1] = 1; z[n+1] = 0; }

5 Määritys - menetelmä - toteutus (jatkuu)
Toinen esimerkki: tiedonhaku järjestetystä listasta. Määritys: syöte: jono suuruusjärjestyksessä annettuja kokonais-lukuja a1 £ a2 £ ... £ aN ja luku x. tulos: vastaus kysymykseen ”esiintyykö luku x jonossa a1,a2, ..., aN, so. onko x = ai jollakin i = 1,…, N?” huom: kokonaislukulistan sijaan voitaisiin tarkastella mitä tahansa järjestettyä luetteloa, vaikkapa henkilön x etsimistä puhelinluettelosta, johon sisältyvät nimet ovat aakkosjärjestyksessä a1,a2, ..., aN. Menetelmä 1: peräkkäishaku. Vertaa lukua x lukuun a1: jos x = a1, tulos on ”löytyi”; jos x < a1, tulos on ”ei löytynyt”; jos x > a1, jatka listan läpikäyntiä. Toista askel 1 listan alkioilla a2, ..., aN. Jos lopulta x > aN, tulos on ”ei löytynyt”.

6 Määritys - menetelmä - toteutus (jatkuu)
Menetelmä 2: puolitushaku (binäärihaku). Oletetaan,että lukua x haetaan lukujonosta b1 £ b2 £ ... £ bn, joka on jokin jonon a1 £ a2 £ ... £ aN osajono; aluksi (b1 £ b2 £ ... £ bn) = (a1 £ a2 £ ... £ aN).. Olkoon m = én/2ù (é...ù = pyöristys ylöspäin). Vertaa lukua x lukuun bm. Jos x = bm, tulos on ”löytyi”, muuten: jos n = 1, tulos on ”ei löytynyt”; jos x < bm, etsi lukua listasta b1 £ b2 £ ... £ bm; jos x > bm, etsi lukua listasta bm+1 £ bm+2 £ ... £ bm.

7 Määritys - menetelmä - toteutus (jatkuu)
Seuraavassa vielä peräkkäis- ja puolitushaun toteutukset Pascal-kielen tapaisella ohjelmointi-kielellä: function seqsearch(A[1..n], x); begin for i := 1 to n do if x = A[i] then return ”Löytyi” else if x < A[i] then return ”Ei löytynyt”; return ”Ei löytynyt” end {seqsearch}; function binsearch(A[1..n], x); m := én/2ù; if x = A[m] then return ”Löytyi”; if n = 1 then return ”Ei löytynyt”; if x < A[m] then binsearch(A[1..m], x) else binsearch(A[m+1..n], x) end {binsearch}.

8 Lukujärjestelmät 10-järjestelmän sijaan voidaan lukujen esittämiseen käyttää myös yleisesti jotain k-kantaista järjestelmää. Tietotekniikassa perustava on 2-kantainen järjestelmä (binääriluvut), ja usein käytetään myös 8- ja 16-järjestelmiä (oktaali- ja heksadesimaaliluvut). 2-järjestelmän aakkosto (numeromerkit): {0,1} 8-järjestelmän aakkosto: {0,1,..,7} 16-järjestelmän aakkosto: {0,1,…,9,A,B,…,F} k-kantaisessa järjestelmässä annetun luvun (numerojonon) a = anan-1…a0 lukuarvo on v(a) = a0 + a1k + … + ankn = Si aiki esim. 11012 = 1*20 + 0*21 + 1* * 23 = = 13. C1A16 = 10* * *162 = = 3098. Peruskouluyhteenlaskua voidaan, kantaluku muut-taen, soveltaa missä tahansa lukujärjestelmässä.

9 Tiedon esittäminen tietokoneessa
Laskulaitteiden rakentamista helpottaa mahdolli-simman yksinkertaisen tiedonesityksen valinta tietokoneissa kaikki tieto esitetään 2-järjestelmän numerojonoina (bittijonoina) Kullakin tietobitillä on tietokonelaitteistossa jokin fysikaalinen vastine: keskusyksikössä jännitetaso tietyssä sähköpiirin kohdassa (0 = 0V, 1 = +5V) ulkoisissa muistilaitteissa usein magnetoitumissuunta tietyssä muistivälineen kohdassa periaatteessa mikä tahansa vähintään 2-tilainen fysikaalinen systeemi käy (valon- tai äänentaajuus, sähköimpulssit neuroneissa, nukleotidit DNA-jonoissa jne.) Kaikki muu tieto koodataan bittijonoiksi.

10 Tiedon esittäminen tietokoneessa (jatkuu)
Aakkostiedon esitys: 7- tai 8-bittinen ASCII-koodi: A = = 4116 = 65 B = = 4216 = 66 Z = = 5C16 = 90 d = = 6416 = 100 v = = 7616 = 118 ä = = E416 = 228 ö = = E616 = 246 Tietoa käsitellään usein tietokoneissa 8 bitin ryhminä, tavuina (engl. byte) Lukuesitykset: lukujen esittämistä varten bitit ryhmitellään usein 16, 32 tai 64 bitin sanoiksi (engl. word) sana voi sisältää joko kokonaisluvun tai liukulukumuodossa esitetyn reaaliluvun esitetty kokonaisluku voi olla joko ei-negatii-vinen, väliltä 0...2w-1 (w sananpituus) tai mielivaltainen, väliltä -(2w-1) … (2w-1-1) [2:n komplementtiesityksessä] reaalilukujen esittämistä varten sana jaetaan etumerkki-, mantissa- ja eksponenttiosaan (esim. etumerkki 1 bitti, mantissa 23 b, eksponentti 8b)

11 Tiedon esittäminen tietokoneessa (jatkuu)
Muut tiedonesitykset: kuvat: vektori- tai rasteri- (bittikartta-)esitys pakattuja (tiivistettyjä) bittikarttamuotoja: GIF, JPEG, TIFF liikkuva kuva: MPEG, AVI, MOV,… ääni: pulssikoodaus & MIDI jne.

12 Diskreetit kuvaukset Sopivasti koodaamalla tietokoneella voidaan (yrittää) laskea mitä tahansa diskreettejä t. digitaalisia syöte/tulos-muunnoksia, so. sellaisia missä syötteet ja tulokset ovat jonkin äärellisen aakkoston merkkijonoja (bittijonoja, 10-järjestel-män lukuja, ASCII-merkkijonoja,…) Itse asiassa tietokoneet ovat universaaleja diskreettejä laskulaitteita: mikä tahansa diskreetti kuvaus, joka voidaan laskea mekaanisesti, voidaan laskea tietokoneella (ns. Churchin-Turingin teesi). 10010 ADD2 101101 11011 PEKKA REVERSE AKKEP

13 Bittilaskennan alkeet: Boolen funktiot
Tietokoneissa kaikki tieto esitetään bitteinä (konkreettisesti: kaksitilaisten fysikaalisten systeemien tiloina). Laskenta toteutetaan tallennettujen bittien arvoja yhdistelemällä. Bittilaskennan alkeisoperaatioita sanotaan Boolen funktioiksi. Yleisesti: Boolen funktio = kuvaus n-bittisiltä jonoilta m-bittisille jonoille, f : {0,1}n ® {0,1}m Tärkeimmät Boolen funktiot: looginen JA, TAI, EI (engl. AND, OR, NOT) AND(x,y) = 1, jos x = 1 ja y = 1; muuten 0. OR(x,y) = 1, jos x = 1 tai y = 1 (tai mol.); muuten 0. NOT(x) = 1, jos x = 0; muuten 0. Totuustauluesitys; esim. OR: x y OR(x,y) 0 0 0 0 1 1 1 0 1 1 1 1

14 Boolen algebra Perusoperaatioille käytetään usein infix-merkintöjä:
x Ù y º AND(x,y) x Ú y º OR(x,y) Ø x º NOT(x) (merk. usein myös x`). Perusoperaatiot noudattavat mm. seuraavia ns. Boolen algebran laskusääntöjä: x Ú 0 = x x Ù 0 = 0 x Ú 1 = 1 x Ù 1 = x x Ú Ø x = 1 x Ù Ø x = 0 Ø 0 = 1 Ø (Ø x) = x x Ú (y Ù z) = (x Ú y) Ù (x Ú z) [Ú :n osittelulaki] x Ù (y Ú z) = (x Ù y) Ú (x Ú z) [Ù:n osittelulaki] Ø (x Ú y) = Ø x Ù Ø y [De Morganin Ú-kaava] Ø (x Ù y) = Ø x Ú Ø y [De Morganin Ù-kaava]

15 Boolen funktiot logiikkaportteina
Suunniteltaessa tietokoneen rakenteita perusoperaatioiden avulla niille käytetään usein seuraavia ”logiikkaporttimerkintöjä”: Peruslogiikkaportit voidaan fysikaalisesti toteuttaa transistoritekniikalla esim. monisteen s. 23 esitetyllä tavalla. AND: x x Ù y y OR: x x Ú y y NOT: x Ø x

16 Logiikkapiirien suunnittelu
Logiikkaportteja yhdistelemällä voidaan toteuttaa mutkikkaampia laskulaitteita, logiikkapiirejä. Esim. kahden bitin poissulkeva TAI (exclusive or): XOR(x,y) = 1 joss x = 1 tai y = 1, mutta ei molemmat. (Infix-merkintä ”x Å y”) Totuustaulu: x y x Å y Toteutus AND-OR-NOT -piirinä: huom.: x Å y = (x Ú y) Ù Ø(x Ù y) x y x Å y

17 Yhden bitin yhteenlasku
Logiikkapiiriä, joka suorittaa yksibittisten lukujen yhteenlaskun, sanotaan kokosummaimeksi (engl. full adder). Tällainen piiri saa syötteekseen kaksi yksibittistä lukua x ja y sekä ”muistibitin” c ja tuottaa tuloksenaan näiden summabitin z sekä uuden muistibitin c’. Seuraava kaavio esittää yhden kokosummainpiirin toteutustavan, jossa on AND- ja OR-porttien lisäksi käytetty hyväksi edellä suunniteltuja XOR-piirejä (Å-merkityt laatikot). x c’ c z y

18 Yhteenlaskupiirit Yleinen n-bittisten binäärilukujen yhteenlaskupiiri saa syötteenään kaksi n bitin jonoa x = xn-1xn-2…x0, y = yn-1yn-2…y0 ja palauttaa tuloksenaan näiden summajonon z = znzn-1zn-1 …z0. Yksinkertaisin tapa toteuttaa tämä piiri on seurata ”peruskoulumenetelmää” ja kytkeä n yhden bitin kokosummainta jonoon muistibittien välityksellä seuraavaan tapaan: FA y0 zn zn-1 z1 z0 xn-1 yn-1 x1 y1 x0 c2 c1 cn-1


Lataa ppt "Tiedon esitys tietokoneessa"

Samankaltaiset esitykset


Iklan oleh Google