Olen silloin tällöin ollut tilanteessa, jossa päädyn selittämään tietokoneen toimintaperiaatetta (normaali ruokatunti Clasussa!). Tietokoneita on kaikkialla, mutta ne ovat eräänlaisia mustia laatikoita, joiden toimintaperiaate on mystinen salatiede. Näin ei ole. Tietokone on pohjimmiltaan äärimmäisen yksinkertainen laite, ja tämä sarja tulee esittelemään sen alkeista ylöspäin.
Matkamme jakautuu yhdeksään osaan kolmen viikon varrella. Tällä viikolla käydään läpi perusteita, joista matematiikka ja logiikka tietokoneen sisällä saavat alkunsa. Ensi viikolla näistä kootaan yksinkertainen tietokone, ja viimeisellä viikolla palasista muodostetaan jokaisen tuntema kokonaisuus. Yritän myös sisällyttää jokaiseen osaan pari tehtävää niille, joilla on aikaa ja kiinnostusta. Viikot ovat jokseenkin erillisiä, joten jokaiselle pitäisi löytyä jotain, toivottavasti.
Jotta sarja pysyisi mielekkäänä, käsittelemme erittäin yksinkertaistettua versiota tietokoneesta. Käsittelemme ohjelmointiakin varsin pintapuolisesti — algoritmien perusteista saisi kasattua toisen samanlaisen sarjan. (Josta voin olla kiinnostunut, jos sille on lukijoita!) Tämä ei opeta rakentamaan tietokonetta tai ymmärtämään Exceliä, mutta ehkä se raottaa hieman verhoa. Aloitetaan!
Logiikan pikakurssi
Tietokoneessa sähkövirralla on kaksi tilaa: päällä tai pois. Sovitaan, että virta tarkoittaa ykköstä ja sen puute nollaa. Virran muokkaaminen on kaikkein alkeellisin taso tietokoneessa. Laitteita, jotka muokkaavat virtaa kutsutaan loogisiksi piireiksi ja ne toteutetaan transistorien avulla. Lähtökohtaisesti tietokone ei ole kuin muutama miljardi transistoria oikeassa järjestyksessä, ja vähän elektroniikkaa niiden tueksi.
Ehkä yksinkertaisin looginen piiri on nimeltään EI (tai NOT). Se kääntää syötteen päinvastaiseksi. Piirien toiminta esitetään usein totuustauluina — nimitys siitä, että ykkönen voidaan tulkita totena ja nolla epätotena — ja EI-piirillä se on seuraavanlainen:
Sisään | Ulos |
---|---|
0 | 1 |
1 | 0 |
Toinen helposti toteutettava piiri on TAI (OR). Kuten vähän aikaa sitten todettiin, "tai" tarkoittaa "jompikumpi tai molemmat":
Sisään 1 | Sisään 2 | Ulos |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
JA (AND) -piiri päästää virran läpi vain, jos kumpikin syöte on ykkönen:
Sisään 1 | Sisään 2 | Ulos |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Ja lopuksi poissulkeva tai eli XOR (eXclusive OR), joka noudattaa sääntöä "jompikumpi mutta ei molemmat":
Sisään 1 | Sisään 2 | Ulos |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Nämä piirit ovat toteutettavissa toistensa avulla, ja siksi on kustannustehokasta kasata mikropiiri käyttäen vain yhdentyyppisiä piirejä. Useimmiten käytetään JA- tai TAI-piirin käänteisiä versioita. Me kuitenkin sivuutamme tämän, ja tulemme käyttämään yllämainittuja operaatioita.
Ykkösten ja nollien salaisuus
Kun nollia ja ykkösiä laitetaan rinnakkain, voidaan esittää lukuja. Nolla ja ykkönen säilyttävät tutun asemansa, mutta miten kirjoitetaan kakkonen? Luvut nollasta kuuteen näyttävät seuraavilta binäärijärjestelmässä:
\[ 0, 1, 10, 11, 100, 101, 110, \dots \]Meille tutussa kymmenjärjestelmässä lukua 9 seuraa 10. Kirjoitetaan nämä selvemmin auki, jotta ero näkyy: 09 ja 10. Vasemmanpuoleinen numero kasvaa yhdellä, ja niin kasvaa oikeanpuoleinenkin. Yhdeksän on viimeinen numero, joten se "pyörähtää ympäri" nollaksi. Samoin käy binäärijärjestelmässä, mutta paljon useammin, koska numeroita on vain kaksi.
Binäärijärjestelmän nerokkuus on juuri siinä, että kahdella numerolla voidaan esittää kaikki mahdolliset luvut. Näitä numeroita voidaan muokata loogisilla piireillä ja siten toteuttaa yhteenlaskun kaltaisia temppuja. Siihen syvennymme keskiviikkona.
Kokeiltavaksi ja pohdittavaksi
- Kokeile kirjoittaa eri lukuja binäärilukuina. Verkosta löytyy erilaisia sivustoja tähän, minkä lisäksi tietokoneen laskimen saa valikosta ohjelmointitilaan.
- Heksadesimaalijärjestelmässä on 16 numeroa: tutut 0-9 ja lisäksi kirjaimet A-F. Selvitä, miten heksadesimaali ja binääri liittyvät toisiinsa.
- Esitä XOR-piiri TAI- ja JA-piirien avulla.
Ei kommentteja:
Lähetä kommentti
Kommentit ovat moderoituja — yritän hyväksyä kommenttisi mahdollisimman pian. Voit kirjoittaa kommenttiin LaTeX-koodia tai yksinkertaista HTML-merkintää: lue lisää Kommentointi-sivulta.