Am o întrebare pentru tine. – SparkFun Electronics

Conversii de sisteme numerice

Când scriem programe pentru microcontrolere, de obicei ne confruntăm cu 3 sisteme numerice diferite: zecimal, binar și hexazecimal (sau hex). Folosim sistemul zecimal pentru că ne vine natural; acesta este modul în care numărăm. Din păcate, nu este modul în care numără computerele. Deoarece computerele și microcontrolerele sunt limitate la 1 și 0, ele numără folosind secvențe ale acestor numere. Acesta este sistemul de numere binare. Numerele binare sunt de obicei prefixate cu caracterele „0b”, care nu fac parte din număr. Uneori sunt, de asemenea, subdivizate în grupuri de 4 cifre pentru a fi mai ușor de citit, precum și pentru a fi mai ușor de comparat cu sistemul de numere hexazecimal. Un exemplu de număr binar este 0b0100.1011. Punctele din număr nu reprezintă nimic, ele doar ușurează citirea numărului.

Sistemul binar este simplu de înțeles, dar este nevoie de o mulțime de cifre pentru a folosi sistemul binar pentru a reprezenta numere mari. Sistemul hexazecimal poate reprezenta numere mult mai mari folosind mai puține caractere și se aseamănă foarte mult cu numerele binare. Numerele hexadecimale sunt de obicei prefixate cu caracterele „0x”, care nu fac parte din număr. O singură cifră hexazecimală poate reprezenta patru cifre binare!
Numerele binare pot fi formate doar din 1 și 0; de obicei, un număr binar este format din 8 cifre (sau un multiplu de 8) dacă este utilizat într-un fel de calculator (sau microcontroler). Este util să știți cum să convertiți un număr binar într-un număr zecimal și viceversa. Așadar, cum facem conversia între sistemele numerice? Mai întâi luați în considerare modul în care determinăm valoarea unui număr zecimal. Numărul 268 poate fi descompus ca 200 + 60 + 8, sau 2 * (10^2) + 6 * (10^1) + 8 * (10^0). Există două cifre importante pe care trebuie să le cunoaștem pentru a „deconstrui” numărul – baza sistemului numeric și locația cifrei în cadrul numărului. Baza unui număr zecimal este 10. Atunci când convertim numărul 268, 2 este a doua cifră, 6 este prima cifră și 8 este cifra zero. Fiecare cifră trebuie să fie scalată în funcție de locul pe care îl ocupă în cadrul numărului. Scara cifrei este baza sistemului numeric ridicată la puterea poziției cifrei în cadrul numărului. Astfel, fiecare cifră este scalată, iar apoi toate cifrele scalate sunt adunate pentru a găsi valoarea totală a numărului.
Aceeași metodă poate fi folosită pentru a găsi valoarea unui număr binar. De exemplu, să ne uităm la numărul 0b1011.0101. Baza sistemului binar este 2 (prefixul 0b este adesea folosit în cod pentru a indica faptul că numărul este în format binar). Valoarea numărului nostru este: 1*(2^7)+0*(2^6)+1*(2^5)+1*(2^4)+0*(2^3)+1*(2^2)+0*(2^1)+1*(2^0), care este egală cu 181.
0b1011.0101. Ce mod complet ineficient de a tasta un număr! Dar putem reprezenta același număr binar folosind doar 2 cifre hexazecimale. Mai întâi, însă, vom începe prin a converti un număr hexazecimal (hex) în zecimal, așa cum am făcut pentru un număr binar. Ce ziceți de 0xB5? Stai, ce?! Prefixul 0x este folosit în cod pentru a indica faptul că numărul este scris în hexazecimal. Dar ce caută „B” acolo? Formatul hexazecimal are o bază de 16, ceea ce înseamnă că fiecare cifră poate reprezenta până la 16 valori diferite. Din păcate, nu mai avem cifre numerice după ‘9’, așa că începem să folosim litere. Litera „A” reprezintă 10, „B” este 11, „C” este 12, „D” este 13, „E” este 14 și „F” este 15. ‘F’ este cea mai mare cifră din sistemul de numerație hexagonală. Convertim numărul în același mod ca și înainte. Valoarea lui 0xB5 este, așadar, 0xB5: B*(16^1)+5*(16^0) sau 181.
Cunoașterea modului de conversie a numerelor binare și hexagonale în zecimal este importantă, dar cea mai utilă conversie de numere este, probabil, conversia între hexagonal și binar. Aceste două sisteme de numerație funcționează de fapt destul de bine împreună. Se întâmplă ca sistemele de numerație să fie legate astfel încât o singură cifră hexagonală reprezintă exact 4 cifre binare și, astfel, 2 cifre hexagonale pot reprezenta 8 biți (sau cifre binare). Iată un tabel care arată modul în care fiecare cifră hexagonală este legată de sistemul binar:

.

.

Valoare binară Valoare hexagonală
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 1111 F

De exemplu, pentru a converti numărul hexazecimal 0x1C în binar, vom găsi valoarea binară corespunzătoare pentru 1 și C și le vom combina. Așadar, 0x1C în binar este 0b0001.1100. Dacă am dori să aflăm valoarea hexagonală pentru un număr binar, trebuie doar să mergem în cealaltă direcție. Pentru a găsi reprezentarea hexagonală a numărului binar 0b0010.1011, găsim mai întâi valoarea hexagonală pentru 0010, apoi valoarea hexagonală pentru 1011 și le combinăm; valoarea hexagonală ar fi 0x2B.

Există multe instrumente gratuite disponibile pentru a ajuta la conversia între aceste sisteme de numerație, căutați pe Google „conversia numerelor hexagonale”. Dacă folosiți Windows ca sistem de operare, aveți un instrument excelent integrat în calculator. Trebuie doar să schimbați calculatorul în modul științific și puteți converti între sistemele de numerație prin tastarea unui număr și apoi prin schimbarea formatului calculatorului!

Lasă un răspuns

Adresa ta de email nu va fi publicată.