[ hakemisto / edellinen / seuraava ] [ näytä valikko ]

Bittitason operaatiot


Miten algoritmit toteutetaan tietokoneessa?

Tietokone toimii sähköllä. Tästä saadaan helposti kaksi tilaa:

Yhtä hyvin voitaisiin valita esim. neljä tilaa: jännitettä ei ole (0 V) tai sitä on 2 V, 4 V tai 6 V. Miksei tehdä näin, miksi on valittu vain kaksi tilaa?

Jännite on harvoin täsmälleen 0 V tai 5 V. Kun tulkitsemme analogista jännitettä digitaaliseksi, meidän on "pyöristettävä" sopivasti: lähellä nollaa volttia => olkoon tila 0 V. Viiden voltin tuntumassa oleva jännite tulkitaan 5 V:n tilaksi:

jännitteen tulkitseminen biteiksi

Koska tietokoneessa virta joko kulkee tai sitten ei, kuvaamme näitä tiloja numeroilla 0 (vastaa nollaa volttia) ja 1 (vastaa viittä volttia) eli valitsemalla kaksi ensimmäistä numeroa. Näitä tietokoneen käyttämää kahta numeroa, kahta erilaista tilaa, kutsutaan biteiksi (bit).

Ongelma: Meillä on myös numerot 2, 3, 4, ... ja kaikki kirjaimet ja vaikka mitä. Tämä ratkaistaan sopimalla tietyt vastaavuudet esim. kirjainten ja tietokoneen ymmärtämien bittien välille.

Sopivista komponenteista (transistorit) pystymme rakentamaan erilaisia operaatioita bittien välille. Tarvitsemme esimerkiksi sellaista komponenttia, joka päästää virtaa lävitseen vain silloin, kun siihen saapuvista molemmista piuhoista tulee virtaa (AND-portti). Jos vain toisesta sisääntulosta tulee virtaa, se ei riitä. Mitään ei tule läpi. Samoin käy, jos kummastakaan saapuvasta piuhasta ei tule mitään sisään.

Tietokoneet koostuvat tällaisista porteista (gates), jotka tekevät sisään tuleville biteille jotain:

piirikaavion portit AND, OR, NOT
ja XOR

AND-portti vaatii, että molempien sisäänmenojen on oltava ykkösbittejä, jotta ulos tulisi ykkösbitti. OR-portille riittää, että edes toisesta piuhasta tulee sisään jotain (tai molemmista). Kaikkein yksinkertaisin on NOT-portti, jossa on vain yksi sisäänmeno: se vain vaihtaa ykkösbitin nollaksi ja päinvastoin. XOR (poissulkeva OR) tuottaa ulos ykkösbittiä vain silloin, kun täsmälleen toinen sisäänmenoista on ykkönen ja toinen on olla.

Koko tietokoneen toiminta perustuu juuri näihin loogisiin operaatioihin AND, OR ja NOT.


Totuustaulut

Seuraavissa taulukoissa on esitetty em. loogisten operaattorien totuustaulut. Totuustaulusta nähdään, mitä ko. portti tuottaa ulos missäkin tapauksessa, kun sisäänmenopiuhojen A ja B jännitettä (bittejä) vaihdellaan.

Ainakin operaattorien AND, OR ja NOT totuustaulujen osaaminen on Sinulle välttämätöntä, jos haluat oppia ohjelmoimaan. Jokaista vähänkin monimutkaisempaa ehtolauseketta kirjoittaessasi lasket juuri näitä ANDin ja ORin tuottamia tuloksia. Ykkösbitti vastaa arvoa tosi (true) ja nollabitti arvoa epätosi (false).

A B A AND B
0 0 0
0 1 0
1 0 0
1 1 1

A B A OR B
0 0 0
0 1 1
1 0 1
1 1 1

A B A XOR B
0 0 0
0 1 1
1 0 1
1 1 0

A NOT A
0 1
1 0


Esimerkki: kahden bitin yhteenlasku

Luodaan porteista systeemi, joka laskee kaksi bittiä yhteen ja tulostaa niiden summan:

Nyt myös tulostettava summa tulee esittää bitteinä. Seuraavassa totuustaulussa on esitetty yhteenlaskun totuustaulu:

Eka bitti Toka bitti Summa
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0

Miten summan ensimmäinen ja toinen bitti saadaan, kun käytössä on pelkät loogiset portit AND, OR, NOT ja XOR?

Miten yhteenlaskupiiri toteutetaan?

Tässä ensin pelkät syötteet ja tulosteet:

yhteenlaskupiirin syötteet ja tulosteet

Laskennan toteuttava piirikaavio:

yhteenlaskupiirin toteutus


Esimerkkejä ja harjoituksia

Oletetaan, että meillä on ohjelmassa 4 totuusarvotyyppistä muuttujaa:

a) Milloin lisätään uusi?

b) Milloin lisäyksessä sattuu virhetilanne?


Milloin videon takaisinkelaus pysäytetään?

Vastaava piirikaavio?


Päivitetty 30.12.1998 / Sari A. Laakso, email: salaakso@cs.helsinki.fi
Sivun URL: http://www.cs.Helsinki.FI/~salaakso/alkeet/luentomoniste/nomenu/bitit.html
Näiden WWW-sivujen hallintajärjestelmän kehitti Tero Pekkanen

DO NOT PRINT THIS DOCUMENT
[ hakemisto / edellinen / seuraava ] [ näytä valikko ]