Palautteita. Tutoriaalit olivat vaikeat! Totta, tentti on onneksi helpompi

Samankaltaiset tiedostot
811120P Diskreetit rakenteet

Lukujärjestelmät. Digitaalitekniikan matematiikka Luku 9 Sivu 3 (26) Lukujärjestelmät ja lukujen esittäminen Fe

Digitaalitekniikan matematiikka Luku 10 Sivu 1 (14) Lukujärjestelmämuunnokset. 2 s s

ANSI/IEEE Std

5. Laskutoimitukset eri lukujärjestelmissä

SISÄLLYS - DIGITAALITEKNIIKKA

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

Luku- ja merkkikoodit. Digitaalitekniikan matematiikka Luku 12 Sivu 1 (15)

Kappale 20: Kantaluvut

Paavo Räisänen. Ohjelmoijan binaarialgebra ja heksaluvut.

Ohjelmoijan binaarialgebra ja heksaluvut

Ongelma 1: Onko datassa tai informaatiossa päällekkäisyyttä?

C = P Q S = P Q + P Q = P Q. Laskutoimitukset binaariluvuilla P -- Q = P + (-Q) (-Q) P Q C in. C out

Liite 1. Laajennettu Eukleideen algoritmi suoraviivainen tapa

2 j =

Tietokonearitmetiikka

Jäännösluokat. Alkupala Aiemmin on tullut sana jäännösluokka vastaan. Tarkastellaan

Tekijä Pitkä Matematiikka 11 ratkaisut luku 2

Digitaalitekniikan matematiikka Luku 13 Sivu 1 (10) Virheen havaitseminen ja korjaus

Tietorakenteet (syksy 2013)

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten,

Tietokonearitmetiikka

Luento 6 Tiedon esitysmuodot. Lukujärjestelmät Kokonaisluvut Liukuluvut Merkit, merkkijonot Totuusarvot Kuvat, äänet, hajut(?)

Luento 6 Tiedon esitysmuodot

Luento 6 Tiedon esitysmuodot

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

Luento 6 Tiedon esitysmuodot. Tiedon esitys laitteistossa (3)

Jokainen kokonaisluku n voidaan esittää muodossa (missä d on positiivinen kok.luku) Tässä q ja r ovat kokonaislukuja ja 0 r < d.

Ajattelemme tietokonetta yleensä läppärinä tai pöytäkoneena

Liukulukulaskenta. Pekka Hotokka

Yhden bitin tiedot. Binaariluvun arvon laskeminen. Koodin bittimäärä ja vaihtoehdot ? 1

Merkitse kertolasku potenssin avulla ja laske sen arvo.

Tiedon esitysmuodot. Luento 6 (verkkoluento 6) Lukujärjestelmät Kokonaisluvut, liukuluvut Merkit, merkkijonot Äänet, kuvat, muu tieto

Tiedon esitysmuodot. Luento 6 (verkkoluento 6) Lukujärjestelmät Kokonaisluvut, liukuluvut Merkit, merkkijonot Äänet, kuvat, muu tieto

Huom! (5 4 ) Luetaan viisi potenssiin neljä tai viisi neljänteen. 7.1 Potenssin määritelmä

MS-A0402 Diskreetin matematiikan perusteet

TIES325 Tietokonejärjestelmä. Jani Kurhinen Jyväskylän yliopisto Tietotekniikan laitos

1 Lukujen jaollisuudesta

Salausmenetelmät. Veikko Keränen, Jouko Teeriaho (RAMK, 2006)

7. Laskutoimitukset eri lukujärjestelmissä 1 / 31

8.1 Murtoluvun määritelmä - murtoluvulla tarkoitetaan aina osaa (osia) jostakin kokonaisuudesta

Luento 6 Tiedon esitysmuodot. Tiedon esitys laitteistossa (3)

Luento 6 Tiedon esitysmuodot

2. Eukleideen algoritmi

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Tietokonearitmetiikka

3. Kongruenssit. 3.1 Jakojäännös ja kongruenssi

2.2 Neliöjuuri ja sitä koskevat laskusäännöt

811120P Diskreetit rakenteet

R : renkaan R kääntyvien alkioiden joukko; R kertolaskulla varustettuna on

Kokonaisluvut. eivät ole kokonaislukuja!

BL40A1711 Johdanto digitaalielektroniikkaan: Johdanto ja lukujärjestelmät

Tietokonearitmetiikka

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Ohjelmoinnin perusteet Y Python

Luento 6 Tiedon esitysmuodot. Tiedon esitys laitteistossa (4) Tiedon esitys (7) Suorittimen ymmärtämä tieto (9) Tietokoneen toiminta, K

Ohjelmoinnin perusteet Y Python

Numeeriset menetelmät

Luento 6 Tiedon esitysmuodot

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

LUKUTEORIA johdantoa

LUKUJÄRJESTELMÄT. Kymmenjärjestelmä eli desimaalijärjestelmä. Binäärilukujärjestelmä

Syötteen ainoalla rivillä on yksi positiivinen kokonaisluku, joka on alle = Luvussa ei esiinny missään kohtaa numeroa 0.

Aiemmin opittu. Jakson tavoitteet. Ajankäyttö. Tutustu kirjaan!

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

811120P Diskreetit rakenteet

Ohjelmoinnin peruskurssi Y1

Antti Vähälummukka 2010

Lukuteorian kertausta

Salausmenetelmät / Osa I Veikko Keränen, Jouko Teeriaho (RAMK, 2006)

811120P Diskreetit rakenteet

Matematiikan tukikurssi, kurssikerta 3

Luvuilla laskeminen. Esim. 1 Laske

Johdatus lukuteoriaan Harjoitus 11 syksy 2008 Eemeli Blåsten. Ratkaisuehdotelma

Tietotyypit ja operaattorit

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 8 To Timo Männikkö

NELIÖJUURI. Neliöjuuren laskusääntöjä

Seguinin lauta A: 11-19

1. Mikä on lukujen 10, 9, 8,..., 9, 10 summa? 2. Mikä on lukujen 10, 9, 8,..., 9, 10 tulo? =?

Tässä riisinjyvien määrät jokaisessa ruudussa on laskettava yhteen. Tällöin tuloksena on

HUOLTOMATEMATIIKKA 1, SISÄLTÖ TIEDOT JA ESIMERKIT:

Diskreetit rakenteet P 5 op

Diskreetit rakenteet. Juha Kortelainen

Python-ohjelmointi Harjoitus 2

Yhden bitin tiedot. Digitaalitekniikan matematiikka Luku 1 Täsmätehtävä Tehtävä 1. Luettele esimerkkejä yhden bitin tiedoista.

Digitaalitekniikan matematiikka Harjoitustehtäviä

LIITE 1 VIRHEEN ARVIOINNISTA

Ohjelmoinnin peruskurssi Y1

Algoritmit 1. Demot Timo Männikkö

Ohjelmoinnin perusteet Y Python

Salausmenetelmät LUKUTEORIAA JA ALGORITMEJA. Veikko Keränen, Jouko Teeriaho (RAMK, 2006) 3. Kongruenssit. à 3.4 Kongruenssien laskusääntöjä

Algoritmit 2. Luento 3 Ti Timo Männikkö

2. Polynomien jakamisesta tekijöihin

n. asteen polynomilla on enintään n nollakohtaa ja enintään n - 1 ääriarvokohtaa.

Luento 6 Tiedon esitysmuodot

Tiedon tyypit Kommunikointi ihmisen kanssa. Luento 6 Tiedon esitysmuodot. Tiedon esitys laitteistossa (4) Suorittimen ymmärtämä tieto (9)

Jakso 6 Tiedon esitysmuodot

LIITE 1 VIRHEEN ARVIOINNISTA

Transkriptio:

Palautteita Tutoriaalit olivat vaikeat! Totta, tentti on onneksi helpompi 504

Mitä range() tekee? range on funktio, joka palauttaa listan esim. a = range(5,10) Palauttaa listan [5,6,7,8,9] Siis nämä kolme silmukkaa ovat identtiset: for x in range(5,10): print x a = [5,6,7,8,9] for x in a: print x for x in [5,6,7,8,9]: print x 505

Tietokoneen matemaattiset perusteet

Tänään Tietokoneen matemaattiset perusteet Lukujärjestelmät Tiedon koodaustavat Tentissä ei saa käyttää laskinta. Seuraavat asiat kannattaa opetella sillä silmällä Käytössä on villen alkeellinen laskin

Tietokoneen matemaattiset perusteet

Algoritmista suoritukseen Tähän asti tarkasteltu itse algoritmeja Algoritmien merkitys perustuu niiden automaattiseen suorittamiseen Tietokone yleissuoritin Pystyy suorittamaan erilaisia algoritmeja Aloitetaan tietokoneen toiminnan tarkastelu

Von Neumannin konemalli Lähes kaikki tietokoneet perustuvat 40-luvun John von Neumannin käsitteisiin, ns. von Neumannin konemalliin: Tietokoneessa on Muisti (joukko samankaltaisia muistipaikkoja) Prosessori, jolla käytössä joukko rekistereitä Prosessori voi Ladata tietoa muistista rekistereihin Suorittaa aritmeettisia ja loogisia operaatioita rekistereille Tallentaa rekisterien arvot takaisin muistiin Koneen ohjelma koostuu Käskyjoukosta, jolla operaatioita tehdään Kontrollikäskyistä, joilla määrätään seuraava käsky

Bitti Digitaalisen tietokoneen toiminta perustuu kahden olotilan periaatteelle: kone joka tunnistaa kaksi eri olotilaa Useampien tilojen käyttö ei juuri tuo etuja; mutkistaa rakennetta kohtuuttomasti Lähes kaikki tietokoneet käyttävät binäärijärjestelmää toiminnan pohjana Sana bitti (bit) tulee sanoista BInary digit Tarkoittaa kaksijärjestelmän numeroa Pienin informaation yksikkö

Tiedon koodaus/dekoodaus Tiedon koodaus (coding): tiedon esittämistä jonkin järjestelmän mukaisina merkkeinä tai symboleina Tieto yleensä esitetty jotenkin ennen koodausta, joten kyse tiedon esitystavan muuttamisesta Alkuperäisen esitystavan palautusta kutsutaan dekoodaukseksi (decoding) Kaksi perustapaa koodaukseen Tiedoittainen koodaus: muunnetaan alkuperäinen merkitys kokonaisuutena uuteen esitysmuotoon Esim. liikennemerkit, henkilötunnus, vakioveikkaus Merkeittäinen koodaus: muunnetaan esitystavan merkit yksitellen uuteen esitysmuotoon Esim. morseaakkoset

Esim. sanojen koodaus tiedoittain Tehtävä: koodaa perusmuotoisia suomenkielisiä sanoja Tiedossa lista kaikista suomenkielen sanoista ja järjestysnumeroista Koodaamme sanat niiden järjestysnumerolla listassa Esim. aloittelija => 45 Luku 45 voidaan vaikka lähettää verkon yli ja vastaanottaja dekoodaa sanat samanlaisesta taulukosta 42 aloitteikas 43 aloitteinen 44 aloittelija 45 aloitus 46 aloituskorkeus 47 aloitusmerkki 48 aloituspaikka. 513

Esim. sanojen koodaus merkeittäin Koodataan jokainen merkki erikseen Esim: HEI => 8 5 9, JEE => 10 5 5 0 välilyönti 1 A 2 B 3 C 4 D 5 E 6 F 7 G 8 H 9 I 10 J 514

Tieto tietokoneessa Tieto tietokoneessa voidaan jakaa: Merkkitietoon Aakkosellinen ja aakkosnumeerinen Tiedon merkitys ei suoraan nähtävissä tiedon esityksestä Koodataan yleensä merkeittäin biteiksi Lukuihin Numeerinen tieto Luvun arvo määräytyy suoraan luvun esityksestä (kun lukujärjestelmä tunnetaan)

Aakkosellisen tiedon koodaus Joudutaan siis koodaamaan merkeittäin biteiksi Jokaiselle merkille varataan yksikäsitteinen bittiyhdistelmä Useita järjestelmiä muunnoksen tekemiseen 7- tai 8-bittinen ASCII (American Standard Code for Information Interchange) Pääsi alkuaikoina eräänlaisen standardin asemaan 7-bittisellä ASCII-koodilla esitettävissä 2 7 eli 128 merkkiä Riitti juuri isojen/pienten kirjainten, numeroiden ja välimerkkien koodaukseen Ei riittänyt eri maissa käytettäviin erikoismerkkeihin (ä, ö, å, jne) 8-bittisellä ASCII koodilla 2 8 eli 256 merkin koodaus Riitti myös monien maiden erikoismerkkeihin Yleisesti: n-bittisellä koodisanalla esitettävissä 2 n erilaista koodia

7-bittinen ASCII-taulukko

Aakkosellisen tiedon koodaus Useita järjestelmiä muunnoksen tekemiseen Unicode Ohjelmistotalojen kehittämä merkistöstandardi Yksilöivä koodiarvo yli 90 000 erilaiselle kirjoitusmerkille Useimmin käytetty merkistö nykyisin Esimerkkejä merkeistä: http://unicode-table.com/en/

Aakkosellisen tiedon koodaus Myös numeerinen, numeromerkeistä koostuva tieto, voidaan esittää merkkikoodina Numero ei aina tarkoita lukua vaan tulkittavissa numerosarjoiksi vailla arvoa. Esim. Osoitteissa Nimissä Puhelinnumeroissa Henkilötunnuksissa Asiakasnumeroissa

Lukujärjestelmät

Luku ja numero Luku (number) on matemaattinen objekti jolla arvo Numero (digit) on lukujen esittämiseen käytettävä merkki Numerot 0, 1, 2, 3, 4, 5, 6, 7, 8 ja 9 10-järjestelmän luvuissa Numerot 0, 1 2-järjestelmän luvuissa Kun numerot esittävät lukuja, tiedollinen koodaus mahdollista Jos luvuilla lasketaan, lukujen arvojen koodaaminen järkevämpää kuin lukujen numeroiden koodaaminen Tietokoneessa luvut esitetään kaksikantaisen lukujärjestelmän lukuina

Lukujärjestelmät Lukujärjestelmä (number system) jonka kantaluku k, sanotaan k- järjestelmäksi (eli k-ariseksi järjestelmäksi) k-järjestelmässä luvun esittämiseen käytettävissä k numerosymbolia d 0, d 1,, d k-1 Yleisesti käytetyissä positionaalisissa järjestelmissä luvun esityksessä olevan numeron merkitys riippuu paitsi numerosymbolista, myös sen sijainnista muihin numeroihin nähden Esim numeron 5 merkitys luvuissa 150 ja 5002

Lukujärjestelmät - määritelmä K-järjestelmän esitys a n-1 a n-2 a 1 a 0.a -1 a -2 a -(m-1) a -m tarkoittaa lukua a n-1 k n-1 +a n-2 k n-2 + +a 1 k+a 0 +a -1 k -1 +a -2 k -2 + a -(m-1) k -(m-1) +a -m k -m (missä tahansa järjestelmässä laskutoimitukset suoritetaan, yleensä 10) Kukin a i (i=n-1,,1,0,-1,,-m) on jokin d j (d j =0, 1,,k-1) Jos lukujärjestelmä ei käy selväksi, kantaluku voidaan merkitä luvun esityksen perään (a n-1 a n-2 a 1 a 0.a -1 a -2 a -(m-1) a -m ) k

Esimerkki: 10-järjestelmän esitys 5329 kymmenjärjestelmän esityksenä Tarkoittaa lukua: = 5000+ 300 + 20 + 9

Esimerkki: 2-järjestelmä 10-järjestelmäksi Muuntaminen muista järjestelmistä 10-järjestelmään tehdään yleensä käyttäen edellistä määritelmää: 10110 2-järjestelmän esityksenä Tarkoittaa lukua: =16+0+4+2+0=22 kymmenlukujärjestelmässä

Usein käytettyjä lukujärjestelmiä 2-järjestelmä eli binäärijärjestelmä Kantaluku k = 2 Numerosymbolit: 0, 1 8-järjestelmä eli oktaalijärjestelmä Kantaluku k = 8 Numerosymbolit: 0, 1, 2, 3, 4, 5, 6, 7 10-järjestelmä eli desimaalijärjestelmä Kantaluku k = 10 Numerosymbolit: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 16-järjestelmä eli heksadesimaalijärjestelmä Kantaluku k = 16 Numerosymbolit: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

Muunnos 10-järjestelmästä k-järjestelmään Algoritmi, syöte luku a 10-järjestelmässä, tulos luku k-järjestelmässä: 1. Jaa a luvulla k 2. a = kokonaisosa jakolaskusta 3. lisää jakojäännöksen numero tulosluvun etummaiseksi 4. Jos a == 0, lopeta 5. Mene kohtaan 1 527

Esimerkki, 10->2 Muunnetaan luku 523 binäärijärjestelmään 523/2 = 261, jakojäännös 1 261/2 = 130, jakojäännös 1 130/2 = 65, jakojäännös 0 65/2 = 32, jakojäännös 1 32/2 = 16, jakojäännös 0 16/2 = 8, jakojäännös 0 8/2 = 4, jakojäännös 0 4/2 = 2, jakojäännös 0 2/2 = 1, jakojäännös 0 1/2 = 0, jakojäännös 1, jakolaskun lopputulos = 0, voidaan lopettaa 528

Esimerkki, 10->2 Muunnetaan luku 523 binäärijärjestelmään 523/2 = 261, jakojäännös 1 261/2 = 130, jakojäännös 1 130/2 = 65, jakojäännös 0 65/2 = 32, jakojäännös 1 32/2 = 16, jakojäännös 0 16/2 = 8, jakojäännös 0 8/2 = 4, jakojäännös 0 4/2 = 2, jakojäännös 0 2/2 = 1, jakojäännös 0 1/2 = 0, jakojäännös 1, Tulos: 523=1000001011 jakolaskun lopputulos = 0, voidaan lopettaa 529

Esimerkki, 10->2 Muunnetaan luku 16 binäärijärjestelmään, lyhennetään jakojäännös=j 16/2 = 8 j=0 8/2 = 4 j=0 4/2 = 2 j=0 2/2 = 1 j=0 1/2 = 0 j=1 jakolaskun lopputulos = 0, voidaan lopettaa Tulos: 16=10000 Tämä luku on jo hyvä muistisääntö bittien lukujärjestykselle: jos luku luettaisiin ylhäältä alaspäin, tulos olisi 00001=1 joka on järjetöntä Alhaalta ylöspäin ei etunollia voi tulla: viimeinen vaihe on aina 1/2 530

Muunnokset muiden järjestelmien välillä 2 Oletetaan, että haluamme muuntaa x-järjestelmästä y-järjestelmään eikä kumpikaan näistä ole 10-järjestelmä Teoriassa edellä kuvatut algoritmit osaavat tehdä muunnoksen suoraan, jos osaisimme laskea laskutoimituksia x tai y-järjestelmässä Ongelma: (Yleensä) emme osaa luontaisesti laskea x- tai y-järjestelmässä jako tai kertolaskuja (laskimella tai päässä) Ratkaisu: Muunnetaan ensin x-järjestelmästä 10-järjestelmään Sitten 10-järjestelmästä y-järjestelmään Edellä kuvatut algoritmit toimivat helposti 532

Lukujärjestelmän muunnokset - esimerkkejä Muunnetaan luku 374 11 4-järjestelmään (10-järjestelmän kautta) 374 11 = 3*11 2 +7*11+4 = 444 10 444/4 = 111, j=0 111/4 = 27, j=3 27/4 = 6, j=3 6/4 = 1, j=2 1/4 = 0, j=1 Siis 374 11 = 12330 4

Lukujärjestelmän muunnokset Desimaaliluvun muunnos 10-järjestelmästä k-järjestelmään: Oletukset: x on luvun kokonaisosa, y luvun desimaaliosa, eli luku on x.y Jaetaan x toistuvasti k:lla (ottamalla osamäärän kokonaisosa aina uudeksi jaettavaksi), kunnes jaettava tulee nollaksi Peräkkäiset jakojäännökset muodostavat k-järjestelmän luvun kokonaisosan numerot alhaalta ylös Desimaaliosan muunnos kertomalla y toistuvasti k:lla (ottamalla tulon desimaaliosa aina uudeksi kerrottavaksi) Peräkkäisten tulojen kokonaisosat muodostavat k-järjestelmän desimaaliosan numerot ylhäältä alas Huom: vaikka desimaaliluku olisi 10-järjestelmässä päättyvä, se voi olla k- järjestelmässä päättymätön (ja päinvastoin)

Desimaaliluvun muunnos esimerkki Muunnetaan luku 123.703125 10 4-järjestelmään Kokonaisosa: 123/4 = 30, jakojäännös 3 30/4 = 7, jakojäännös 2 7/4 = 1, jakojäännös 3 1/4 = 0, jakojäännös 1 Desimaaliosa: 0.703125*4 = 2.8125 0.8125*4 = 3.25 0.25*4 = 1.00 (0.00*4 = 0.00) Lopputulos: 1323.231 4

Tietojenkäsittely ja kantaluvut Tietojenkäsittelijän näkemys: kantaluvun tulisi olla 2:n potenssi Oktaali- ja heksadesimaalijärjestelmät käytössä binäärilukujen yhteydessä Muunnos k-järjestelmän ja k j -järjestelmän välillä helpompi, koska se voidaan tehdä j numeron lohkoissa

Heksadesimaalijärjestelmä Heksadesimaalijärjestelmä (16-järjestelmä) on tavallinen tapa ilmaista lukuja bittien sijaan Muunnos näiden järjestelmien välillä on helppoa: 4 peräkkäistä bittiä vastaa aina yhtä numeroa heksadesimaalijärjestelmässä Voidaan käyttää taulukkoa: Jos taulukon osaa konstruoida, muunnokset ovat todella helppoja Bitteinä 16-järj. Bitteinä 16-järj. 0000 0 1000 8 0001 1 1001 9 0010 2 1010 A (tämä on hyvä tietää, edelliset algoritmit toimivat myös 0011 3 1011 B 0100 4 1100 C 0101 5 1101 D 0110 6 1110 E 0111 7 1111 F 537

Muunnos binäärijärjestelmän ja heksadesimaalijärjestelmän välillä Muunnetaan 10011011101101 heksadesimaaliksi 0 01 0 0 1 1 0 1 1 1 0 1 1 0 1 2 Muunnetaan CD60 binäärijärjestelmään: 6 1 1 0 0 1 1 0 1 E 0 1 1 0 D 0 0 0 0 C D 6 0 B H B H 0000 0 1000 8 0001 1 1001 9 0010 2 1010 A 0011 3 1011 B 0100 4 1100 C 0101 5 1101 D 0110 6 1110 E 0111 7 1111 F

Oktaalijärjestelmä Oktaalijärjestelmä (8-järjestelmä) on toinen toisinaan esiintyvä järjestelmä Koska järjestelmä on kahden potenssi, muunnos voitaisiin jälleen tehdä taulukolla 2-lukujärjestelmän ja 16- lukujärjestelmien välillä 539

Binäärilukujen yhteenlasku allekkain 1 1 1 0 1 0 + 1 1 0 1 1: 1 1 + 1 1 1 1 0 1 0 1 1 0 1 1 1 0 1 0 1 0 1 1 Muistakaa ViLLE-tehtävissä aina merkitä muistinumerot jotka ovat ykkösiä, nekin arvioidaan!

Lukualue Laskutoimituksia rajoittaa lukualue Jos käytössä on 4-bittinen esitys, niin yhteenlaskun tuloskaan ei voi koskaan olla yli 4-bittinen Jos edellisessä olisi määritelty, että käytössä on vain 6 bittiä, seitsemäs bitti olisi ollut ns. ylivuotobitti (overflow) Ylivuotobitti ei kuulu laskun lopputulokseen (Tehtävissä kerrotaan aina selvästi käytetty lukualue) + 1 1 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1

Kokonaislukujen esittäminen

Kokonaislukujen esittäminen Positiivisen luvun esitys kaksijärjestelmässä sanotaan luvun puhtaaksi binääriesitykseksi Ei riitä negatiivisten lukujen esittämiseen, myös etumerkki pitää esittää Yksinkertainen tapa: lisätään eteen etumerkin kertova bitti Vasemmanpuoleisin eli eniten merkitsevä (most significant) bitti on Positiivisille luvuille 0 Negatiivisille luvuille 1 n bitillä voidaan esittää 2 n binäärilukua, eli kokonaisluvut -2 n-1, 0, 2 n-1-1 Tätä kutsutaan etumerkki+itseisarvo esitykseksi Vielä pitää varmistua siitä, että yhteenlasku toimii Yhteenlasku on perusoperaatio: kaikki muut voidaan johtaa siitä (-,*,/)

Luku Etum.+itseisarvo Etumerkki+itseisarvo-esitys +5 0101 +1 0001 Toimiiko yhteenlasku? Esim. yhteenlasku -2 ja +3 allekkain 1. Muunnetaan -2= -0010 = 1010 2. Lasketaan allekkain: -2 = 1010 +3 = 0011 1101 = -5 Ongelma 1: Positiivisten ja negatiivisten lukujen lukusuorat kulkevat eri suuntaan Positiivisten lukujen binääriesityksen itseisarvo kasvaa kun luku kasvaa Negatiivisten lukujen pienenee kun luku kasvaa +0 0000-0 1000-1 1001-5 1101 Ongelma 2: Nollalla on kaksi esitystä: plus nolla ja miinus nolla

Luku 1:n komplementti Yhden komplementtiesitys +5 0101 +1 0001 Komplementoidaan negatiivisten lukujen itseisarvo-osat Nollat ykkösiksi Ykköset nolliksi Lukusuorien suunnat nyt samat, korjaa ongelman 1 Esim. yhteenlasku -2 ja +3 allekkain 1. Muunnetaan -2 -> 0010 -> 1010 -> 1101 2. Lasketaan allekkain -2 = 1101 +3 = 0011 0000 = (+)0 +0 0000-0 1111-1 1110-5 1010 Vastaus vieläkin väärin, koska nollalla vielä kaksi arvoa, mutta ainakin lukusuorat kulkevat samaan suuntaan

Oltiinko edes lähellä? Kokeillaan muita arvoja: -2 = 1101 +3 = 0011 0000 = (+)0-1 = 1110 +3 = 0011 0001 = 1 0 = 0000 +3 = 0011 0010 = 3 1 = 0001 +3 = 0011 0010 = 4-0 = 1111 +3 = 0011 0010 = 2 Yhteenlasku melkein toimii, mutta on yhden liian pieni kun yhteenlaskettava on negatiivinen Miten korjataan?

Luku 2:n komplementti Kahden komplementtiesitys +5 0101 +1 0001 Siirretään 1:n komplementtiesityksen negatiivisia lukuja yhdellä pykälällä (lisää +1) Nollalle jää vain yksi esitys (+0) Lukualue laajenee yhdellä negatiiviseen suuntaan Esimerkkiyhteenlasku -2 ja +3 allekkain jälleen 1. Muunnetaan -2 -> -0010 -> 1010 -> 1101 -> 1110-2 -> norm.esitys -> etumerkki-> komplementti -> komplementti+1 2. Lasketaan allekain -2 = 1110 +3 = 0011 0001 = +1 +0 0000-0 - -1 1111-5 1011

Kahden komplementtiesitys Kokonaislukujen mekaaninen yhteenlasku toimii siis myös negatiivisilla luvuilla Ensimmäinen bitti kertoo edelleen etumerkin Käytännössä 2:n komplementtiesitys käytössä kaikissa tietokoneissa Voidaan tulkita lukusuoralla: Positiiviset luvut oikealla paikallaan Negatiiviset luvut siirretty posit. oikealle puolelle lisäämällä niihin 2 n Esim.: -2 = 1110 eli -2 + 2 4 = 14 = 1110. Negatiivisen 10-järjestelmän luvun 2:n komplementtiesitys saadaan: Vaihtamalla itseisarvoltaan vastaavan positiivisen luvun esityksen 1 0 ja 0 1 Lisäämällä lukuun sitten yksi

Kahden komplementtiesitys 2 Yksinkertaisesti muunnoksen kahden komplementtiesitykseen voi kuvata seuraavasti: Jos luku on positiivinen, palauta luvun tavallinen binääriesitys Jos luku on negatiivinen: Komplementoi luku kokonaisuudessaan, etumerkkeineen päivineen Lisää saatuun lukuun yksi ja palauta tulos Huomaa, että komplementointi itsessään asettaa jo etumerkin ykköseksi 550

Kahden komplementtiesitys Laskutoimituksia rajoittaa lukualue Oletetaan, että bittejä on käytössä n kappaletta Jos n = 16, esitettävissä luvut -32 768 +32 767 Jos laskutoimitus ei pysy alueen rajoissa, ei tulos 2:n komplementtiesityksessäkään voi olla oikein syntyy ylivuoto Tämäntyyppisessä ylivuodossa ei välttämättä tule ylivuotobittiä, vaan merkkibitti vain vaihtuu kun sen ei pitäisi Esim. +4 = 0100 +5 = 0101 1001 = -7

Kahden komplementtiesitys Laskun tulos ei kuitenkaan ole mitä sattuu: tulos on aina oikein modulo 2 n (n on esityksen pituus) Luvut X ja y ovat kongruentteja modulo m, merkitään x y (mod m), jos x=y+km Missä k on kokonaisluku Esim. -7 9 (mod 16) Lukusuora onkin siis lukusykli Laskutoimitukset esityksen pituuden n määräämällä lukualueella Toisistaan k*2 n verran eroavat luvut ovat siis samassa kohden rengasta mutta eri kierroksella

Excess-koodaus Vielä yksi yleisesti käytetty kokonaislukujen esitystapa Idea: siirretään lukualue a b kokonaan positiiviselle puolelle lisäämällä kaikkiin lukuihin a Esim jos n=4 ja lukualue -8 7 puhutaan excess-8-koodauksesta Kaikkiin lukuihin lisätään siis 2 4-1 =8 Ensimmäinen bitti edustaa etumerkkiä (0 negatiivinen, 1 positiivinen) Aritmetiikka ei yhtä kätevää kuin 2:n komplementtiesityksessä Eräitä teknisiä etuja Esim koodaus säilyttää lukujen suuruusjärjestyksen Luku Excess +5 1101 +1 1001 +0 1000-0 - -1 0111-5 0011

Esimerkki: koodaaminen excess-4-esitykseen Lukualue siis -4 3 Muunnetaan luku 2 Lisätään lukuun 4, 2+4 = 6 6 muunnetaan binäärijärjestelmään tulos: 110 554