Lukujärjestelmät ja emäkset

Kantajärjestelmät, kuten binääri- ja heksadesimaalijärjestelmät, vaikuttavat aluksi hieman oudoilta. Tärkeintä on ymmärtää, miten eri järjestelmät ”tikittävät” kuin matkamittari, kun ne ovat täynnä. Perus 10, meidän desimaalijärjestelmämme, ”tikittää”, kun se saa 10 kappaletta, jolloin syntyy uusi numero. Odotamme 60 sekuntia ennen kuin ”tikittää” uuteen minuuttiin. Heksa- ja binäärijärjestelmät ovat samankaltaisia, mutta ne tikittävät 16:n ja 2:n kappaleen välein.

Kokeile muuntaa numerot heksaksi ja binääriksi tässä:

Viime aikoina: Unary Numbers

Viime aikoina meillä ei ollut perusjärjestelmiä! Se oli ylämäkeä molempiin suuntiin, lumen ja paahtavan kuumuuden läpi. Kun halusit laskea ykkösen, kirjoitit:

l

Kun halusit 5, kirjoitit

lllll

Ja selvästikin 1 + 5 = 6

l + lllll = llllll

Tämä on yksinkertaisin tapa laskea.

Tulkaa roomalaiset

Roomalaisissa numeroissa kaksi oli yksi, kahdesti. Kolme oli yksi, kolmesti:

one = Itwo = IIthree = III

Mutta he päättivät, että he pystyivät parempaan kuin vanhaan perinteeseen eli viivoihin hiekassa. Viidelle voisimme käyttää V:tä edustamaan lllll ja saisimme jotain sellaista kuin

l + V = Vl

Ei hassumpaa, vai mitä? Ja tietysti on paljon muitakin symboleja (L, C, M jne.), joita voi käyttää.

Keskeistä on se, että V ja lllll ovat kaksi tapaa koodata luku 5.

Anna jokaiselle luvulle nimi

Toinen läpimurto oli sen oivaltaminen, että jokainen luku voi olla oma erillinen käsitteensä. Sen sijaan, että esittäisit kolmea ykkösten sarjana, anna sille oma symbolinsa: ”3″. Tee näin yhdestä yhdeksään, niin saat symbolit:

1 2 3 3 4 5 6 7 8 9

Roomalaiset olivat lähellä, niin lähellä, mutta antoivat vain yksilölliset symbolit 5:lle, 10:lle, 50:lle, 100:lle, 1000:lle jne. Niitä on yksinkertaisesti liikaa.

Mutta huomaa yksi oivallus roomalaisista numeroista: ne käyttävät symbolien sijaintia merkityksen osoittamiseen.

IV tarkoittaa ”vähennä 1 5:stä″

ja VI tarkoittaa ”lisää 1 5:een″.

Meidän numerojärjestelmässämme käytämme sijaintia samalla tavalla. Laskemme aina yhteen emmekä koskaan vähennä. Ja jokainen asema on 10 enemmän kuin sitä edeltävä.

Valintamme perusta 10

Miksi päätimme kertoa aina 10:llä? Todennäköisesti siksi, että meillä on 10 sormea.

Yksi huomioitava seikka on se, että tarvitset tarpeeksi numeroita ”täyttämään”, kunnes osut seuraavaan numeroon. Sallikaa minun havainnollistaa.

Jos haluamme kääntää matkamittarin niin sanotusti 10:n välein, tarvitsemme symboleja numeroille yhdestä yhdeksään; emme ole vielä saavuttaneet kymmentä. Kuvittele, että numerot tikittävät hitaasti ylöspäin – missä vaiheessa käännetään seuraava yksikkö ja aloitetaan tyhjästä?

Kirjoita nolla

Ja mitä tapahtuu, kun saavutamme kymmenen? Miten osoitamme, että haluamme täsmälleen yhden ”kympin” ja ei mitään ”ykkösten” sarakkeeseen?

Käytämme nollaa, numeroa, jota ei ole olemassa. Nolla on melkoinen käsite, se on paikanvaraaja, tyhjä, välilyönti ja paljon muuta. Riittää kun sanon, että nolla on yksi kaikkien aikojen suurimmista keksinnöistä.

Nolla antaa meille mahdollisuuden tyhjään paikanvaraajaan, jotain mitä roomalaisilla ei ollut. Katsokaa, miten kömpelöitä heidän numeronsa ovat ilman sitä.

George Orwellin kuuluisa romaani ”1984″ olisi ”MCMLXXXIV”! Vierii suoraan kieleltä, eikö vain?

Muiden perusteiden harkitseminen

Muistakaa, että päätimme kääntää matkamittarimme joka kymmenes. Laskutoimituksemme näyttää tältä:

123456789 (uh oh, I'm getting full!)10 (ticked over – start a new digit)

Mitä jos laskettaessa tikittäisimme 60:llä, kuten teemme sekuntien ja minuuttien kohdalla?

1 second2345…58591:00 (60 seconds aka 1 minute. We've started a new digit.)

Kaikki kunnossa tähän mennessä, eikö? Huomaa, että käytämme kaksoispistettä (:) osoittamaan, että olemme uuden ”numeron” kohdalla. Perus 10:ssä jokainen numero voi seistä omana lukunaan.

Kokeile perus 16:ta

Jos haluamme perus 16:n, voisimme tehdä jotakin vastaavaa:

123456789101112131415 (we're getting full)1:00 (16 – we've started a new digit)

Mutta emme halua kirjoittaa heksadesimaalilukuja kaksoispisteen merkintätavalla (vaikka voisimme). Keksimme mieluummin erilliset symbolit 10-15:lle, jotta voimme vain kirjoittaa numeroita kuten olemme tottuneet. Numerot ovat loppu (1-9 on jo käytetty, ja 0 on varalla), joten tarvitsemme muita symboleja. Voisimme käyttää vinoviivoja tai muita muotoja, mutta tapana on käyttää kirjaimia roomalaiseen tyyliin. Aivan kuten 5:stä tuli V, ohjelmoijat käyttävät kirjaimia A-F saadakseen tarpeeksi numeroita 16:een asti. Eli

123456789A (10 – we're using the symbol "A")B (11)C (12)D (13)E (14)F (15 – uh oh, we're getting full)10 (16 – we start a new digit)

Ahah! Nyt voimme käyttää yhtä numeroa jokaista ”paikkaa” kohti, ja tiedämme, että 10 tarkoittaa, että olemme päässeet 16:een kerran.

20 tarkoittaa, että olemme päässeet 16:een kahdesti (32).

25 tarkoittaa, että olemme päässeet 16:een kahdesti (jolloin saamme 32:n) ja menneet ylimääräisen 5. Yhteensä 32 + 5 = 37.

Pikakatsaus

Oletko mukana tähän mennessä? Tämä on aika siistiä, eikö? Voimme laskea millä systeemillä haluamme. Huomaa myös, että perusta 16 on ”tilatehokkaampi” siinä mielessä, että voimme kirjoittaa 11:n kaltaisen luvun yhdellä numerolla: B.

Kanta 16 ei oikeastaan eroa kovin paljon kanta 10:stä, meillä vain kestää kauemmin täyttää se.

Binäärilukujen ihmeellinen maailma

Olemme nähneet paljon kantajärjestelmiä, yliyksinkertaisesta unaarista, sekaviin roomalaisiin numeroihin, tasaisesti toimivaan kanta 10:een ja kompaktiin kanta 16:een.

Mitä mahtavaa binääriluvussa on? Yksinkertaisuuden hengessä se on yksinkertaisin lukujärjestelmä, jossa on käsite ”tikittää”. Unääriluku, jossa kirjoitetaan vain 1, 11, 111… jatkuu loputtomiin. Binääri, jossa on kaksi vaihtoehtoa (1 ja 0), näyttää tältä:

1: 12: 10 (we're full – tick over)3: 114: 100 (we're full again – tick over)5: 1016: 1107: 1118: 1000 (tick over again)…

ja niin edelleen.

Koska binääri on niin yksinkertainen, se on erittäin helppo rakentaa laitteistoon. Tarvitaan vain asioita, jotka voivat kytkeytyä päälle tai pois päältä (jotka edustavat 1:tä ja 0:ta), eikä asioita, joilla on 10 mahdollista tilaa (jotka edustavat desimaalilukua).

Koska binääri on niin yksinkertainen, se on myös virheenkestävä. Jos signaalisi on ”osittain päällä” (sanotaan vaikka 0,4), voit olettaa sen olevan nolla. Ja jos se on enimmäkseen päällä (vaikkapa 0,8), voit olettaa sen olevan 1. Jos käytät järjestelmää, jossa on 10 mahdollista tilaa, on vaikea sanoa, milloin tapahtui virhe. Tämä on yksi syy siihen, miksi digitaaliset signaalit ovat niin häiriönkestäviä.

Muut esimerkit emäksistä

Käytämme koko ajan muita emäksiä, jopa dynaamisesti muuttuvia emäksiä. Emme yleensä ajattele sitä sillä tavalla:

Tunnit, minuutit, sekunnit: 1:32:04

  • Tiedämme, että tämä on 1 tunti, 32 minuuttia ja 4 sekuntia. Sekunneissa tämä on 16060 + 32*60 + 4.

Jalkoja ja tuumia: 3′ 5″

  • Tämä on 3 jalkaa, 5 tuumaa tai 3 * 12 + 5 tuumaa.

Puntia ja unssia: 8 lbs, 5 oz

  • Koska punta on 16 oz, Tämä on 8 * 16 + 5 oz. Olemme käyttäneet koko ajan 16-peruslukujärjestelmää!

Parting thoughts

”10″ missä tahansa lukujärjestelmässä ilmaisee peruslukua ja tarkoittaa, että olemme rastittaneet kerran. Binäärissä 10 tarkoittaa kahta, desimaalissa 10 tarkoittaa kymmentä ja heksadesimaalissa 10 on kuusitoista.

Miten nämä luvut pidetään erillään? Ohjelmoijat kirjoittavat usein ”0b” binäärilukujen eteen. Niinpä 2 binäärilukuna on

0b10

Vastaavasti he kirjoittavat 0x heksalukujen eteen. Joten 16 heksadesimaalina on:

0×10

Jos edessä ei ole mitään symboleja (0b tai 0x), oletamme, että kyseessä on perusluku 10, eli tavallinen luku.

Mene nyt eteenpäin ja nauti uusista tiedoistasi!

Tämän sarjan muut viestit

  1. Lukujärjestelmät ja emäkset
  2. Pikaopas GUID:iin
  3. Quaken nopean käänteisen neliöjuuren ymmärtäminen
  4. Yksinkertainen johdanto tietokoneeseen Networking
  5. Kahden muuttujan vaihtaminen XOR:n avulla
  6. Big- ja Little Endian -tavujärjestyksen ymmärtäminen
  7. Unicode ja sinä
  8. Pieni diddy binääritiedostoformaateista
  9. Lajittelualgoritmit

Vastaa

Sähköpostiosoitettasi ei julkaista.