Matematika

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.

S SKAIČIUOKIME redakcija 5 min. skaitymo
Straipsnio turinys
Susijusi skaičiuoklė Skaičiavimo sistemų keitiklis

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ę

Pozicija8421
Bitai1011
Reikšmė8021

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