Dvejetainė sistema: kaip kompiuteris skaičiuoja nuliais ir vienetais
Kaip veikia dvejetainė, aštuntainė ir šešioliktainė sistemos, kaip versti skaičius iš vienos į kitą ir kodėl programuotojai skaičiuoja nuo nulio.
Straipsnio turinys
- Kas yra skaičiavimo sistemos pagrindas
- Pozicijų reikšmės
- Iš dvejetainės į dešimtainę
- Iš dešimtainės į dvejetainę
- Bitai ir baitai
- Kilobaitas: 1000 ar 1024
- Šešioliktainė sistema
- Kur matomi šešioliktainiai skaičiai
- Aštuntainė sistema
- Veiksmai dvejetainėje sistemoje
- Kodėl programuotojai skaičiuoja nuo nulio
- Neigiami skaičiai
- Persipildymas
- Trupmeniniai skaičiai
- Kaip atrodo tekstas dvejetainiu pavidalu
- Kodėl kartais tekstas rodomas kaip šiukšlės
- Kur tai praverčia ne programuotojui
- Kur dar naudojami kiti pagrindai
- Kaip greitai atpažinti sistemą
- Loginiai veiksmai su bitais
- Kaip mokytis versti greitai
Dešimtainė sistema atrodo natūrali tik todėl, kad turime dešimt pirštų. Iš tikrųjų skaičius galima užrašyti bet kokiu pagrindu, ir kompiuteriai naudoja patį paprasčiausią — du.
Kas yra skaičiavimo sistemos pagrindas
Pagrindas rodo, kiek skirtingų skaitmenų naudojama. Dešimtainėje sistemoje jų dešimt, nuo 0 iki 9, dvejetainėje — tik du, 0 ir 1.
Kai skaitmenys baigiasi, pridedama nauja pozicija. Dešimtainėje po 9 eina 10, dvejetainėje po 1 eina 10, kuris reiškia du. Principas tas pats, skiriasi tik greitis, kuriuo skaitmenys išsenka.
Pozicijų reikšmės
Kiekviena pozicija turi savo svorį, kuris yra pagrindo laipsnis. Dešimtainiame skaičiuje 342 tai šimtai, dešimtys ir vienetai.
Dvejetainiame skaičiuje pozicijos yra 1, 2, 4, 8, 16, 32 ir taip toliau. Todėl užrašas 1011 reiškia 8 + 0 + 2 + 1, tai yra 11.
Iš dvejetainės į dešimtainę
| Pozicija | 8 | 4 | 2 | 1 |
|---|---|---|---|---|
| Bitai | 1 | 0 | 1 | 1 |
| Reikšmė | 8 | 0 | 2 | 1 |
Vertimas paprastas: sudedamos tos pozicijos, kuriose stovi vienetas. Šiuo atveju 8 + 2 + 1 duoda 11. Ilgesniems skaičiams patogiau naudoti skaičiavimo sistemų keitiklį.
Iš dešimtainės į dvejetainę
Skaičius nuosekliai dalijamas iš dviejų, o liekanos užrašomos. Perskaičius liekanas iš apačios į viršų gaunamas dvejetainis užrašas.
Antras būdas greitesnis mintyse: ieškoma didžiausio dvejeto laipsnio, kuris telpa į skaičių, jis atimamas ir procesas kartojamas. Skaičiui 22 tai 16, tada 4, tada 2, ir gaunama 10110.
Bitai ir baitai
Vienas bitas yra vienas nulis arba vienetas. Aštuoni bitai sudaro baitą, o baitas gali įgyti 256 skirtingas reikšmes, nuo 0 iki 255.
Būtent todėl daugelis kompiuterinių ribų atrodo keistai: 255, 1024, 65 536. Visi šie skaičiai yra dvejeto laipsniai arba jų kaimynai.
Kilobaitas: 1000 ar 1024
Istoriškai kilobaitu buvo vadinami 1024 baitai, nes tai dvejeto laipsnis. Vėliau atsirado standartas, pagal kurį kilobaitas yra 1000 baitų, o 1024 vadinami kibibaitu.
Praktiškai tai paaiškina, kodėl nupirktas terabaitinis diskas rodo mažiau vietos, nei žadėta. Gamintojas skaičiuoja tūkstančiais, o sistema — dvejeto laipsniais. Perskaičiuoti padeda duomenų matų konverteris.
Šešioliktainė sistema
Šešioliktainėje sistemoje naudojama 16 skaitmenų: nuo 0 iki 9 ir raidės nuo A iki F. Raidė A reiškia 10, o F — 15.
Jos privalumas tas, kad vienas šešioliktainis skaitmuo tiksliai atitinka keturis bitus. Todėl ilgi dvejetainiai skaičiai užrašomi keturis kartus trumpiau ir lieka lengvai atkoduojami.
Kur matomi šešioliktainiai skaičiai
Dažniausias atvejis — spalvų kodai internete. Užrašas su grotelėmis ir šešiais simboliais yra trys baitai: raudona, žalia ir mėlyna dalys.
Taip pat šešioliktainiais užrašomi MAC adresai, atminties adresai ir kontrolinės sumos. Visur ta pati priežastis: kompaktiškas dvejetainių duomenų užrašas.
Aštuntainė sistema
Aštuntainėje sistemoje naudojami skaitmenys nuo 0 iki 7, o vienas skaitmuo atitinka tris bitus. Šiandien ji rečiau naudojama, bet išliko failų teisėse.
Būtent todėl teisės nurodomos skaičiais kaip 755 arba 644. Kiekvienas skaitmuo koduoja tris teises: skaitymo, rašymo ir vykdymo.
Veiksmai dvejetainėje sistemoje
Sudėtis veikia taip pat, kaip dešimtainėje, tik perkėlimas atsiranda anksčiau. Vienas plius vienas duoda 10, tai yra nulį su perkėlimu.
Dėl šio paprastumo procesoriai ir dirba dvejetainiais skaičiais: sudėties lentelė turi tik keturias eilutes, o ne šimtą, kaip dešimtainėje sistemoje.
Kodėl programuotojai skaičiuoja nuo nulio
Kai turimi n bitai, jie gali užkoduoti reikšmes nuo 0 iki 2ⁿ − 1. Nulis yra pilnavertė reikšmė, todėl jį praleisti reikštų iššvaistyti vieną variantą.
Iš čia ir kilo įprotis numeruoti nuo nulio. Tai ne keistenybė, o tiesioginė dvejetainio kodavimo pasekmė.
Neigiami skaičiai
Neigiamiems skaičiams naudojamas papildomo kodo principas: vyriausias bitas rodo ženklą, o pati reikšmė užrašoma taip, kad sudėtis veiktų be atskiro atėmimo veiksmo.
Būtent todėl aštuoniais bitais užrašomi skaičiai nuo −128 iki 127, o ne nuo −127 iki 127. Nulis užima vieną vietą teigiamoje pusėje.
Persipildymas
Kai skaičius viršija galimą ribą, jis apsisuka į kitą galą. Prie 255 pridėjus vienetą baite gaunamas nulis, o ne 256.
Šis reiškinys yra daugelio klaidų priežastis programose ir žaidimuose, kur rezultatas staiga tampa neigiamas. Tai ne atsitiktinumas, o tiesioginė bitų skaičiaus riba.
Trupmeniniai skaičiai
Dvejetainėje sistemoje ne visos dešimtainės trupmenos užrašomos tiksliai. Skaičius 0,1 dvejetainėje yra begalinis, lygiai kaip trečdalis dešimtainėje.
Iš to kyla garsusis rezultatas, kai kompiuteris sudėjęs 0,1 ir 0,2 gauna truputį daugiau nei 0,3. Tai ne klaida, o kodavimo savybė.
Kaip atrodo tekstas dvejetainiu pavidalu
Raidės kompiuteryje irgi yra skaičiai. Senoji ASCII lentelė kiekvienam simboliui skyrė vieną baitą, todėl tilpo 128 pagrindiniai ženklai.
Lietuviškoms raidėms to nepakako, ir dėl to ilgai buvo problemų su kodų lentelėmis. Šiandien naudojamas Unicode, kur vienas simbolis gali užimti kelis baitus.
Kodėl kartais tekstas rodomas kaip šiukšlės
Kai failas užrašytas viena koduote, o atveriamas kita, kiekvienas baitas išverčiamas ne į tą simbolį. Iš to ir gimsta žinomi klaustukai bei keisti ženklai vietoje raidžių.
Sprendimas visada tas pats — nurodyti teisingą koduotę. Duomenys faile nepasikeitė, tik jų interpretavimas buvo neteisingas.
Kur tai praverčia ne programuotojui
Failų dydžiai. Aišku, kodėl diske mažiau vietos, nei parašyta ant dėžutės.
Spalvų kodai. Galima suprasti, ką reiškia simbolių eilutė dizaino faile.
Tinklo nustatymai. Kaukės ir adresai tampa suprantami.
Failų teisės. Skaičius 755 nustoja būti magiškas.
Interneto greitis. Megabitai ir megabaitai skiriasi aštuonis kartus, ir tai paaiškina, kodėl atsisiuntimas atrodo lėtesnis nei žadėta.
Kur dar naudojami kiti pagrindai
Laikas skaičiuojamas šešiasdešimtainiu pagrindu: 60 sekundžių, 60 minučių. Ši sistema paveldėta iš senovės Mesopotamijos ir išliko iki šiol.
Kampai matuojami taip pat, o metai dalijami į 12 mėnesių. Dešimtainė sistema tik atrodo visuotinė — realiai kasdien naudojame kelias skirtingas.
Kaip greitai atpažinti sistemą
Jei skaičiuje yra tik nuliai ir vienetai, greičiausiai tai dvejetainis. Jei yra raidžių iki F — šešioliktainis. Jei skaičius prasideda nuliu ir turi tik skaitmenis iki 7, gali būti aštuntainis.
Programavimo kalbose sistema dažnai nurodoma priešdėliu. Tai patogu, nes tas pats užrašas skirtingose sistemose reiškia visiškai skirtingus skaičius.
Loginiai veiksmai su bitais
Be įprastos aritmetikos su bitais atliekami loginiai veiksmai: IR, ARBA, NE. Jie veikia kiekvieną bitą atskirai ir yra viso skaitmeninio pasaulio pagrindas.
Praktinis pavyzdys — tinklo kaukė. Adresas ir kaukė sujungiami veiksmu IR, ir taip nustatoma, kuriam tinklui priklauso įrenginys.
Kaip mokytis versti greitai
Naudinga įsiminti dvejeto laipsnius iki 1024. Turint juos galvoje, vertimas iš dvejetainės tampa paprasta sudėtimi, o atgal — atimtimi.
Verta žinoti ir kelis atskaitos taškus: 1024 yra 2 dešimtajame laipsnyje, o milijonas apytiksliai atitinka 2 dvidešimtajame. Tai leidžia greitai įvertinti dydžius.
Antras įprotis — dvejetainius skaičius grupuoti po keturis. Taip jie iš karto virsta šešioliktainiais, o ilgas nulių ir vienetų eilutes tampa įmanoma perskaityti.
Dažni klausimai
Nes elektronikoje paprasčiausia patikimai atskirti dvi būsenas: yra įtampa arba nėra. Daugiau būsenų reikštų sudėtingesnę ir jautresnę schemą.
Aštuoni bitai duoda 256 skirtingas reikšmes, nuo 0 iki 255. Jei baitas naudojamas ženklui, ribos yra nuo −128 iki 127.
Gamintojas skaičiuoja gigabaitus po tūkstantį milijonų, o sistema dažnai rodo dvejeto laipsniais. Dėl to skirtumas siekia kelis procentus.
Bitai grupuojami po keturis nuo dešinės, ir kiekviena grupė virsta vienu šešioliktainiu skaitmeniu. Dešimtainės sistemos tam neprireikia.
Susijusios skaičiuoklės
Skaitykite taip pat
Trupmenos: sudėtis, daugyba ir kaip jas paversti procentais
Kodėl trupmenas sudėti sunkiau nei sudauginti, kaip rasti bendrą vardiklį, kada trupmena virsta dešimtaine ir kur tai reikalinga virtuvėje bei remonte.
DBD ir MBK: didžiausias bendrasis daliklis ir mažiausias bendrasis kartotinis
Kaip rasti DBD ir MBK, kuo jie skiriasi, kada kuris reikalingas ir kaip jie padeda spręsti visai nematematinius uždavinius.
Laipsniai ir šaknys: taisyklės, kurias verta prisiminti
Kaip veikia laipsnių taisyklės, kodėl bet kas nuliniu laipsniu lygu vienetui, ką reiškia neigiamas laipsnis ir kur tai naudojama praktikoje.