Cuprins:
Video: Scrierea in baza 10, numărarea în baza 2 2024
Variabilele C ++ sunt stocate intern așa numitele numere binare. Numerele binare sunt stocate ca o secvență de valori 1 și 0 cunoscute ca biți. De cele mai multe ori, nu trebuie să rezolvați cu ce biți ați folosit pentru a reprezenta cifrele. Uneori, cu toate acestea, este practic și convenabil să dăruiți numere la nivel de biți - deci C ++ oferă un set de operatori în acest scop.
Așa-numitele operatori logici bit operează pe argumentele lor la nivelul de biți. Pentru a înțelege modul în care funcționează, examinați mai întâi modul în care computerele stochează variabilele.
Sistemul numerelor zecimale
Numerele cu care v-ați familiarizat din momentul în care ați putea conta mai întâi pe degete sunt cunoscute sub numele de numere zecimale pe numărul 10. În general, programatorul exprimă variabilele C ++ ca numere zecimale. Astfel, puteți specifica valoarea var ca (să spunem) 123, dar luați în considerare implicațiile.
Un număr ca 123 se referă la 1 * 100 + 2 * 10 + 3 * 1. Toate aceste numere de bază - 100, 10 și 1 - sunt puteri de 10.
Exprimat într-un mod ușor diferit (dar echivalent), 123 arată astfel: 2+ 2 * 10
1 + 3 * 10 0 . Alte sisteme numerice Bine, bine, folosind 10 ca bază (sau
baza ) din sistemul nostru de numărare, probabil provine din cele 10 degete umane, O bază alternativă pentru un sistem de numărare ar putea fi la fel de ușor de 20.
123
10 = 1 * 8 2
+ 3 * 80 = 173 8
Micile 10 și 8 aici se referă la sistemul de numerotare, 10 pentru zecimal (baza 10) și 8 pentru octal (baza 8). Un sistem de numărare poate folosi orice bază pozitivă. Sistemul numeric binar Calculatoarele au în esență două degete. Calculatoarele preferă numărarea folosind baza 2. Numărul 123 10 ar fi exprimat astfel: 123 10 = 0 * 2 7 6
+ 1 * 2
5
+ 1 * 2 + 1 * 2 1
+ 1 * 2 0 123 10 = 0 * 128 + 1 * 64 + 1 * 32 + 1 * 16 + 1 * 8 + 0 * 4 + 1 * 2 + 1 * 1 = 01111011 2 Convenția computerelor exprimă numere binare utilizând 4, 8, 16, 32 sau chiar 64 cifre binare, chiar dacă cifrele de conducere sunt 0.Acest lucru se datorează și modului în care computerele sunt construite intern. Deoarece termenul cifra se referă la un multiplu de 10, o cifră binară se numește un bit (o abreviere de >). Un byte este alcătuit din 8 biți. (Apelarea unei cifre binare a byte-it nu părea o idee bună.) Memoria este de obicei măsurată în octeți (cum ar fi rulourile sunt măsurate în unități de dulciuri ale brutarului). Cu o bază atât de mică, trebuie să utilizați un număr de mari de biți pentru a exprima cifre. Ființele omenești nu doresc folosirea unei expresii cum ar fi 011110112 pentru a exprima o valoare atât de ludică ca 123
10
. Programatorii preferă să exprime numere utilizând un număr par de biți. Sistemul octal - care se bazează pe 3 biți - a fost sistemul binar implicit în primele zile ale lui C. Vedem o vestigiu a acestui eveniment chiar astăzi - o constantă care începe cu un 0 este presupus a fi octal în C ++. Astfel, linia: cout << "0173 =" << 0173 << endl; produce următoarea ieșire: 0173 = 123 Cu toate acestea, octalul a fost înlocuit aproape complet de sistemul hexazecimal , care se bazează pe cifre pe 4 biți. Hexadecimal utilizează aceleași cifre pentru numerele de la 0 la 9. Pentru cifrele cuprinse între 9 și 16, hexazecimal utilizează primele șase litere ale alfabetului: A pentru 10, B pentru 11 și așa mai departe. Astfel, 123 10 devine 7B 16 , după cum urmează:
123 = 7 * 16 1 + B = 7B 16
Programatorii preferă să exprime numerele hexazecimale în multipli de 4 cifre hexazecimale, chiar dacă cifra de vârf este în fiecare caz 0.
În final cine vrea să exprime un număr hexazecimal cum ar fi 7B
16
folosind un indice? Terminalele nu suportă chiar și
indiciile . Chiar și pe un procesor de text, este un drag pentru a schimba fonturile din și de la subscript doar pentru a tasta două cifre zgârcene. De aceea, programatorii (nu prost, ei) folosesc convenția de a începe un număr hexazecimal cu un 0x. Astfel, 7B devine 0x7B. Folosind această convenție, numărul hexazecimal 0x7B este egal cu 123 zecimal în timp ce 0x123 hexazecimal este egal cu 291 zecimal. Fragmentul de cod
cout << "0x7B =" << 0x7B << endl; cout << "0x123 =" << 0x123 << endl; produce următoarea ieșire: 0x7B = 123 0x123 = 291 Aveți posibilitatea să utilizați toți operatorii matematici pe numerele hexazecimale, la fel cum le-ați aplica pe numerele zecimale. Dacă vrei cu adevărat, poți scrie numere binare în C ++ '14 folosind prefixul "0b". Astfel, 123 devine 0b01111011.