Sisteme de numerație
Calculator pentru schimbarea bazei
Scrie un număr întreg sau un număr cu parte fracționară, de exemplu $156,$ $101{,}11$ sau $\mathrm{7E9}$ (baza 16), și alege baza lui și baza în care vrei să-l convertești. Cifrele mai mari decât 9 sunt litere: A = 10, B = 11, …, Z = 35. Calculatorul arată rezolvarea pas cu pas.
Ce este un sistem de numerație?
Un sistem de numerație este un mod de a scrie numerele cu un mic set de simboluri numite cifre. De obicei scriem numerele în sistemul zecimal. Are zece cifre, de la $0$ la $9,$ probabil pentru că la început oamenii numărau pe cele zece degete ale mâinilor. Aceleași numere se pot scrie și în alte sisteme. Calculatoarele lucrează în sistemul binar, care are doar două cifre, $0$ și $1;$ programatorii folosesc și baza $8$ și baza $16,$ iar minutele și secundele le numărăm și acum din șaizeci în șaizeci.
Toate aceste sisteme sunt poziționale: valoarea unei cifre depinde de poziția ei în număr. În $555$ cei trei de 5 valorează $500,$ $50$ și $5.$ Numerele romane funcționează altfel: în ele X valorează întotdeauna zece (se adună în LX și se scade în XL); poziția lui nu îl face niciodată să valoreze o sută.
În această pagină: Calculator · Valoarea pozițională · Baze · Numărare · Binar · În zecimal · Din zecimal · Fracții · Aritmetica binară · Octal și hexazecimal · Bazele 12 și 60 · Biți, octeți, BCD · Probleme
Valoarea pozițională în sistemul zecimal
Fiecare poziție dintr-un număr zecimal valorează de zece ori mai mult decât cea din dreapta ei: unități, zeci, sute, mii etc. De aceea un număr este suma cifrelor lui, fiecare înmulțită cu o putere a lui $10\text{:}$
${3507}={3\cdot 1000}+{5\cdot 100 + 0\cdot 10 + 7}={3\cdot 10^3 + 5\cdot 10^2}+{0\cdot 10^1 + 7\cdot 10^0.}$
Aceasta este forma desfășurată a numărului. Zeroul este important: arată că nu există zeci, iar fără el $3507$ ar deveni $357.$ Pozițiile din dreapta virgulei zecimale valorează zecimi, sutimi, miimi, adică puteri negative ale lui $10\text{:}$
${0{,}25}={\frac{2}{10} + \frac{5}{100}}={2\cdot 10^{-1} + 5\cdot 10^{-2}.}$
Numere în orice bază
Nimic nu ne obligă să grupăm din zece în zece. Într-un sistem de bază $b$ există $b$ cifre, de la $0$ la $b-1,$ și fiecare poziție valorează de $b$ ori mai mult decât cea din dreapta ei. Pozițiile valorează $1,$ $b,$ $b^2,$ $b^3$ și așa mai departe, deci cifrele $a_n\ldots a_2a_1a_0$ reprezintă numărul
${(a_n\ldots a_2a_1a_0)_b}={a_n\cdot b^n + \ldots}+{a_2\cdot b^2 + a_1\cdot b + a_0.}$
Baza se scrie ca un mic indice după cifre: $1011_2$ este un număr binar, iar $1011_{10}$ este numărul zecimal o mie unsprezece. Un număr fără indice este zecimal. Într-o bază mai mare decât zece, cifrele care urmează după $9$ sunt litere: $\mathrm{A} = 10,$ $\mathrm{B} = 11,$ $\mathrm{C} = 12,$ și așa mai departe până la $\mathrm{Z} = 35$ în baza $36.$
Exemplul 1. Aceleași cifre reprezintă numere diferite în baze diferite:
${1011_2}={1\cdot 2^3 + 0\cdot 2^2 + 1\cdot 2 + 1}={8 + 2 + 1}={11,}$
${1011_3}={1\cdot 3^3 + 0\cdot 3^2 + 1\cdot 3 + 1}={27 + 3 + 1}={31,}$
${1011_{10}}={1000 + 10 + 1}={1011.}$
În orice bază, $10$ (un unu urmat de un zero) este chiar baza: $10_2 = 2,$ $10_8 = 8,$ $10_{16} = 16,$ la fel cum $10$ este zece în sistemul zecimal. La fel, $100_b = b^2$ și $1000_b = b^3.$
Cele mai folosite sisteme:
| Sistem de numerație | Cifre | Unde se folosește |
|---|---|---|
| Baza 2, binar | $0$ și $1$ | calculatoarele și toate aparatele digitale |
| Baza 8, octal | de la $0$ la $7$ | permisiunile fișierelor în Unix și Linux; calculatoare vechi |
| Baza 10, zecimal | de la $0$ la $9$ | numărarea și calculul în viața de zi cu zi |
| Baza 12, duodecimal | de la $0$ la $9,$ $\mathrm{A}$ și $\mathrm{B}$ | duzini și grosuri; 12 luni și 12 ore |
| Baza 16, hexazecimal | de la $0$ la $9$ și de la $\mathrm{A}$ la $\mathrm{F}$ | culorile din paginile web, adrese de memorie, octeți |
| Baza 60, sexagesimal | de la $0$ la $59$ în fiecare poziție | ore, minute și secunde; grade, minute și secunde ale unghiurilor |
Numărarea în alte baze
Contoarele mecanice, cum este kilometrajul unei mașini vechi sau un contor de apă, au rotițe mici cu cifrele de la $0$ la $9.$ Rotița din dreapta înaintează un pas cu fiecare unitate. Când trece de ultima ei cifră, revine la $0$ și face să înainteze un pas rotița următoare: după $0999$ vine $1000.$ Un contor în baza $b$ ar avea $b$ cifre pe fiecare rotiță. Într-un contor binar fiecare rotiță arată doar $0$ sau $1,$ deci rotița din dreapta revine la $0$ la fiecare doi pași și face să înainteze un pas rotița următoare.
Încă o unitate pe un contor zecimal și pe un contor binar: $0999 + 1 = 1000$ și $0111_2 + 1 = 1000_2,$ adică $7 + 1 = 8.$
Așadar, în baza $b$ se numără la fel ca în zecimal: când o poziție are cea mai mare cifră, $b-1,$ următoarea unitate o transformă în $0$ și se trece $1$ la poziția următoare. Iată numerele de la $0$ la $16$ în patru baze:
| Zecimal | Binar | Octal | Hexazecimal |
|---|---|---|---|
| $0$ | $0$ | $0$ | $0$ |
| $1$ | $1$ | $1$ | $1$ |
| $2$ | $10$ | $2$ | $2$ |
| $3$ | $11$ | $3$ | $3$ |
| $4$ | $100$ | $4$ | $4$ |
| $5$ | $101$ | $5$ | $5$ |
| $6$ | $110$ | $6$ | $6$ |
| $7$ | $111$ | $7$ | $7$ |
| $8$ | $1000$ | $10$ | $8$ |
| $9$ | $1001$ | $11$ | $9$ |
| $10$ | $1010$ | $12$ | $\mathrm{A}$ |
| $11$ | $1011$ | $13$ | $\mathrm{B}$ |
| $12$ | $1100$ | $14$ | $\mathrm{C}$ |
| $13$ | $1101$ | $15$ | $\mathrm{D}$ |
| $14$ | $1110$ | $16$ | $\mathrm{E}$ |
| $15$ | $1111$ | $17$ | $\mathrm{F}$ |
| $16$ | $10000$ | $20$ | $10$ |
Cel mai mare număr cu $n$ cifre în baza $b$ are toate cifrele egale cu $b-1.$ Încă o unitate dă $10\ldots0_b = b^n,$ deci acest număr este $b^n-1\text{:}$ $999 = 10^3-1,$ $1111_2 = 2^4-1 = 15$ și $\mathrm{FF}_{16} = 16^2-1 = 255.$
Sistemul binar
Sistemul binar are baza $2$ și doar două cifre, $0$ și $1.$ O cifră binară se numește bit, prescurtare de la englezescul binary digit (cifră binară). Pozițiile unui număr binar valorează puterile lui $2\text{:}$
| $2^7$ | $2^6$ | $2^5$ | $2^4$ | $2^3$ | $2^2$ | $2^1$ | $2^0$ |
|---|---|---|---|---|---|---|---|
| $128$ | $64$ | $32$ | $16$ | $8$ | $4$ | $2$ | $1$ |
Puterile următoare sunt $2^8 = 256,$ $2^9 = 512$ și $2^{10} = 1024.$ În binar, fiecare putere a lui $2$ se scrie ca un $1$ urmat de zerouri, de exemplu $2^5 = 100000_2.$
Calculatoarele folosesc sistemul binar deoarece un bit are nevoie doar de două stări ușor de deosebit: un întrerupător este oprit sau pornit, o tensiune este joasă sau înaltă. Cum fiecare poziție are doar două cifre, foarte curând trebuie să trecem peste ordin: $1 + 1 = 10_2.$ În binar se numără așa: $1,$ $10,$ $11,$ $100,$ $101,$ $110,$ $111,$ $1000$ și așa mai departe.
Conversia unui număr din orice bază în zecimal
Scrie valoarea pozițională deasupra fiecărei cifre, înmulțește fiecare cifră cu valoarea ei pozițională și adună. Este din nou forma desfășurată.
Exemplul 2. Convertește $110101_2$ în zecimal.
| Valoare pozițională | $32$ | $16$ | $8$ | $4$ | $2$ | $1$ |
|---|---|---|---|---|---|---|
| Cifra | $1$ | $1$ | $0$ | $1$ | $0$ | $1$ |
${110101_2}={32 + 16 + 4 + 1}={53.}$
Exemplul 3. Convertește $753_8$ și $\mathrm{2A7}_{16}$ în zecimal. În baza $8$ pozițiile valorează $1,$ $8$ și $8^2 = 64.$ În baza $16$ ele valorează $1,$ $16$ și $16^2 = 256,$ iar cifra $\mathrm{A}$ valorează $10\text{:}$
${753_8}={7\cdot 64 + 5\cdot 8 + 3}={448 + 40 + 3}={491,}$
${\mathrm{2A7}_{16}}={2\cdot 256 + 10\cdot 16 + 7}={512 + 160 + 7}={679.}$
Pentru numere lungi există o metodă mai rapidă, aceeași schemă a lui Horner care se folosește la polinoame: începe cu prima cifră (cea mai din stânga) și apoi, de fiecare dată, înmulțește rezultatul cu baza și adună cifra următoare. Pentru $110101_2\text{:}$
| Cifra | $1$ | $1$ | $0$ | $1$ | $0$ | $1$ |
|---|---|---|---|---|---|---|
| Rezultat | $1$ | $3$ | $6$ | $13$ | $26$ | $53$ |
Fiecare rezultat este rezultatul anterior înmulțit cu $2$ plus cifra de deasupra lui: $1\cdot 2 + 1 = 3,$ $3\cdot 2 + 0 = 6,$ $6\cdot 2 + 1 = 13,$ $13\cdot 2 + 0 = 26,$ $26\cdot 2 + 1 = 53.$ Ultimul rezultat este numărul: $110101_2 = 53.$
Conversia din zecimal în binar și în alte baze
Împărțiri succesive
Împarte numărul cu rest la noua bază $b.$ Restul este ultima cifră a rezultatului. Împarte din nou câtul la $b\text{:}$ noul rest este penultima cifră. Continuă până când câtul este $0,$ apoi citește resturile de jos în sus.
Exemplul 4. Convertește $13$ în binar.
| Împărțire | Cât | Rest |
|---|---|---|
| $13 \div 2$ | $6$ | $1$ |
| $6 \div 2$ | $3$ | $0$ |
| $3 \div 2$ | $1$ | $1$ |
| $1 \div 2$ | $0$ | $1$ |
Citind resturile de jos în sus obținem $13 = 1101_2.$ Verificare: $8 + 4 + 1 = 13.$
Exemplul 5. Convertește $2025$ în hexazecimal. Un rest mai mare decât $9$ se scrie cu o literă: $14 = \mathrm{E}.$
| Împărțire | Cât | Rest |
|---|---|---|
| $2025 \div 16$ | $126$ | $9$ |
| $126 \div 16$ | $7$ | $14 = \mathrm{E}$ |
| $7 \div 16$ | $0$ | $7$ |
Deci $2025 = \mathrm{7E9}_{16}.$ Verificare: ${7\cdot 256 + 14\cdot 16 + 9}={1792 + 224 + 9}={2025.}$
De ce funcționează această metodă? Împărțirea cu rest scrie numărul ca $n = b\cdot q + r$ cu $0 \le r < b,$ deci $r$ este o singură cifră în baza $b.$ În baza $b,$ înmulțirea lui $q$ cu $b$ adaugă un zero la sfârșitul cifrelor lui, la fel ca înmulțirea cu $10$ în zecimal, iar apoi adunarea lui $r$ pune $r$ în locul acelui zero. Prin urmare, $r$ este ultima cifră, iar înaintea ei vin cifrele lui $q.$
Scăderea puterilor lui 2
Pentru sistemul binar există o altă metodă. Scade cea mai mare putere a lui $2$ care nu depășește numărul, apoi cea mai mare putere a lui $2$ care încape în ce a rămas, și așa mai departe până când nu mai rămâne nimic. Fiecare putere folosită dă un $1$ în poziția ei; toate celelalte poziții au $0.$ De exemplu, $13 - 8 = 5,$ $5 - 4 = 1,$ $1 - 1 = 0,$ deci $13 = 8 + 4 + 1 = 1101_2,$ ca în exemplul 4.
Exemplul 6. Convertește $1546$ în binar. Cea mai mare putere a lui $2$ care nu depășește $1546$ este $2^{10} = 1024\text{:}$
$1546 - 1024 = 522,$ $522 - 512 = 10,$ $10 - 8 = 2,$ $2 - 2 = 0.$
Deci ${1546}={2^{10} + 2^9 + 2^3 + 2^1.}$ Pozițiile $10,$ $9,$ $3$ și $1$ au un $1,$ dacă numărăm pozițiile începând cu $0$ din dreapta: $1546 = 11000001010_2.$
Ca să convertești un număr între două baze diferite de zece, convertește-l mai întâi în zecimal și apoi în noua bază. Calculatorul face la fel, cu excepția cazului în care cele două baze sunt puteri ale aceluiași număr, ca $8$ și $16.$ Pentru bazele $2,$ $8$ și $16$ există o scurtătură, explicată în secțiunea Sistemele octal și hexazecimal.
Fracții în alte baze
Cifrele de după virgula zecimală funcționează la fel: în baza $b$ ele valorează $\frac{1}{b},$ $\frac{1}{b^2},$ $\frac{1}{b^3}$ și așa mai departe. În binar, pozițiile de după virgulă sunt jumătăți, sferturi, optimi:
$$101{,}11_2 = 4 + 1 + \frac{1}{2} + \frac{1}{4} = 5{,}75.$$Ca să scrii un număr cuprins între $0$ și $1$ în baza $b,$ înmulțește-l cu $b.$ Partea întreagă a produsului este prima cifră de după virgulă. Apoi înmulțește din nou cu $b$ partea fracționară a produsului ca să obții cifra următoare, și așa mai departe. Aceasta funcționează deoarece, în baza $b,$ înmulțirea cu $b$ mută virgula o poziție spre dreapta: prima cifră de după virgulă trece înaintea ei și devine partea întreagă.
Exemplul 7. Convertește $0{,}625$ în binar.
| Înmulțire | Produs | Cifra |
|---|---|---|
| $0{,}625\cdot 2$ | $1{,}25$ | $1$ |
| $0{,}25\cdot 2$ | $0{,}5$ | $0$ |
| $0{,}5\cdot 2$ | $1$ | $1$ |
Partea fracționară a devenit $0,$ deci cifrele se opresc. Citește-le de sus în jos, nu de jos în sus ca la împărțire: $0{,}625 = 0{,}101_2.$ Verificare: $\frac{1}{2} + \frac{1}{8} = 0{,}625.$
Un număr cu parte întreagă și parte fracționară se convertește pe părți: partea întreagă, prin împărțiri succesive; partea fracționară, prin înmulțiri succesive. De exemplu, $13 = 1101_2$ (exemplul 4) și $0{,}625 = 0{,}101_2,$ deci $13{,}625 = 1101{,}101_2.$
Exemplul 8. Convertește $0{,}1$ în binar.
| Înmulțire | Produs | Cifra |
|---|---|---|
| $0{,}1\cdot 2$ | $0{,}2$ | $0$ |
| $0{,}2\cdot 2$ | $0{,}4$ | $0$ |
| $0{,}4\cdot 2$ | $0{,}8$ | $0$ |
| $0{,}8\cdot 2$ | $1{,}6$ | $1$ |
| $0{,}6\cdot 2$ | $1{,}2$ | $1$ |
Partea fracționară $0{,}2$ a mai apărut, în al doilea rând, deci de acolo încolo cifrele $0011$ se repetă la nesfârșit:
${0{,}1}={0{,}0001100110011\ldots_2}={0{,}0\overline{0011}_2.}$
Bara de deasupra lui $0011$ arată că acest bloc, perioada, se repetă. Un calculator păstrează un număr fix de biți, deci memorează $0{,}1$ doar aproximativ. De aceea în multe limbaje de programare 0.1 + 0.2 dă 0.30000000000000004 și nu exact 0.3.
Dacă dezvoltarea unei fracții este finită sau nu depinde de bază. O fracție ireductibilă are o dezvoltare finită în baza $b$ (un număr finit de cifre după virgulă) dacă și numai dacă fiecare factor prim al numitorului ei divide $b.$ În baza $10 = 2\cdot 5$ fracțiile $\frac{1}{2},$ $\frac{1}{4},$ $\frac{1}{5},$ $\frac{1}{8}$ au o dezvoltare finită, dar $\frac{1}{3} = 0{,}\overline{3}$ nu. În baza $3$ este invers: $\frac{1}{3} = 0{,}1_3.$ În baza $7$ chiar $\frac{1}{7} = 0{,}1_7,$ pe când în zecimal $\frac{1}{7} = 0{,}\overline{142857}.$ În binar au o dezvoltare finită doar fracțiile al căror numitor, după simplificarea fracției, este o putere a lui $2.$
O dezvoltare periodică se poate transforma din nou în fracție (fracția ei generatoare): înmulțește-o cu $b^k,$ unde $k$ este lungimea perioadei, și scade. Fie ${x}={0{,}\overline{01}_2}={0{,}010101\ldots_2.}$ Înmulțirea cu $2^2 = 100_2$ mută virgula două poziții spre dreapta: ${4x}={1{,}010101\ldots_2}={1 + x.}$ Prin urmare, $3x = 1$ și $x = \frac{1}{3}.$
Aritmetica binară
Calculele în orice bază se fac cu aceleași metode „pe coloane” ca în zecimal; se schimbă doar tablele adunării și înmulțirii. În binar ele sunt foarte mici.
Adunarea
$0 + 0 = 0,$ $0 + 1 = 1 + 0 = 1$ și $1 + 1 = 10_2\text{:}$ scriem $0$ și reținem $1.$ Dacă mai avem și o reținere, $1 + 1 + 1 = 11_2\text{:}$ scriem $1$ și reținem $1.$
Exemplul 9. Adună $1011_2 + 110_2.$ Cifrele reținute se scriu cu roșu deasupra coloanelor.
$$\begin{array}{cr} & \textcolor{#c0392b}{111}\phantom{00} \\ & 1011 \\ + & 110 \\ \hline & 10001 \end{array}$$De la dreapta la stânga: $1 + 0 = 1;$ $1 + 1 = 10_2,$ scriem $0$ și reținem $1;$ $0 + 1 + 1 = 10_2,$ scriem $0$ și reținem $1;$ $1 + 1 = 10_2,$ scriem $0$ și reținem $1$ într-o poziție nouă. În zecimal aceasta este $11 + 6 = 17,$ și într-adevăr $10001_2 = 16 + 1 = 17.$
Scăderea
$0 - 0 = 0,$ $1 - 0 = 1$ și $1 - 1 = 0.$ Pentru $0 - 1$ împrumutăm $1$ de la poziția din stânga. Acel $1$ valorează $2$ în poziția curentă, deci coloana dă $10_2 - 1 = 1.$ Dacă acea poziție este $0,$ împrumutăm de la cel mai apropiat $1$ din stânga; zerourile dintre ele devin $1,$ la fel ca $1000 - 1 = 999$ în zecimal.
Exemplul 10. Scade $1101_2 - 110_2.$
$$\begin{array}{cr} & 1101 \\ - & 110 \\ \hline & 111 \end{array}$$De la dreapta la stânga: $1 - 0 = 1.$ Apoi, pentru $0 - 1$ trebuie să împrumutăm de la a treia poziție: $10_2 - 1 = 1,$ iar a treia poziție rămâne $0.$ Acum a treia coloană este $0 - 1,$ și împrumutăm de la a patra poziție: $10_2 - 1 = 1.$ A patra poziție rămâne $0.$ Rezultatul este $111_2,$ iar în zecimal $13 - 6 = 7.$
Înmulțirea
Tabla înmulțirii în binar este $0\cdot 0 = 0\cdot 1 = 1\cdot 0 = 0$ și $1\cdot 1 = 1.$ De aceea, când înmulțim pe coloane, fiecare rând este un rând de zerouri sau primul număr neschimbat, deplasat spre stânga, și rămân doar adunări. Înmulțirea cu $2 = 10_2$ adaugă un zero la sfârșit, la fel ca înmulțirea cu $10$ în zecimal.
Exemplul 11. Înmulțește $101_2\cdot 11_2,$ adică $5\cdot 3.$
$$\begin{array}{cr} & 101 \\ \times & 11 \\ \hline & 101 \\ & 101\phantom{0} \\ \hline & 1111 \end{array}$$Rezultatul este ${1111_2}={8 + 4 + 2 + 1}={15.}$
Exemplul 12. Înmulțește $37\cdot 27$ în binar. Mai întâi, $37 = 100101_2$ și $27 = 11011_2.$ Al doilea număr are cifrele $1,$ $1,$ $0,$ $1,$ $1$ începând din dreapta, deci rândurile sunt $100101$ deplasat cu $0,$ $1,$ $3$ și $4$ poziții, cu un rând de zerouri pentru $0\text{:}$
$$\begin{array}{cr} & 100101 \\ \times & 11011 \\ \hline & 100101 \\ & 100101\phantom{0} \\ & 000000\phantom{00} \\ & 100101\phantom{000} \\ & 100101\phantom{0000} \\ \hline & 1111100111 \end{array}$$Produsul este ${1111100111_2}={512 + 256 + 128}+{64 + 32 + 4 + 2 + 1}={999,}$ și într-adevăr $37\cdot 27 = 999.$ Este o metodă lungă, dar circuitul de înmulțire al unui calculator funcționează asemănător: formează rândurile deplasate și le adună, de miliarde de ori pe secundă.
Împărțirea
Împărțirea în binar este mai simplă decât în zecimal. La fiecare pas, ori împărțitorul încape în partea din deîmpărțit coborâtă până atunci, iar următoarea cifră a câtului este $1,$ ori nu încape, iar cifra este $0.$ Astfel, împărțirea se reduce la scăderi repetate.
Exemplul 13. Împarte $1111_2 \div 101_2,$ adică $15\div 5.$
$$\begin{array}{cr} & 1111 \\ - & 101\phantom{0} \\ \hline & 101 \\ - & 101 \\ \hline & 0 \end{array}$$Împărțitorul $101$ nu încape în $1$ nici în $11,$ dar încape în $111\text{:}$ prima cifră a câtului este $1,$ și $111 - 101 = 10.$ Coborâm ultima cifră: $101.$ Împărțitorul încape din nou, iar restul este $0.$ Deci $1111_2 \div 101_2 = 11_2,$ adică $15 \div 5 = 3.$
Exemplul 14. Împarte $4773\div 37,$ adică ${1001010100101_2 \div 100101_2.}$
$$\begin{array}{cr} & 1001010100101 \\ - & 100101\phantom{0000000} \\ \hline & 100101 \\ - & 100101 \\ \hline & 0 \end{array}$$Împărțitorul încape exact în primele șase cifre, deci prima cifră a câtului este $1$ iar restul este $0.$ Când coborâm una câte una cele șase cifre următoare, numerele sunt mai mici decât împărțitorul, iar în cât apar șase zerouri. Când coborâm ultima cifră, avem din nou $100101\text{:}$ ultima cifră a câtului este $1,$ cu restul $0.$ Deci ${1001010100101_2 \div 100101_2}={10000001_2,}$ și ${10000001_2}={128 + 1}={129;}$ într-adevăr, $37\cdot 129 = 4773.$
Sistemele octal și hexazecimal
Numerele binare lungi sunt greu de citit și ușor de scris greșit. Deoarece $8 = 2^3$ și $16 = 2^4,$ fiecare cifră octală corespunde exact la trei biți, iar fiecare cifră hexazecimală, exact la patru biți:
| Cifra | Biți | Cifra | Biți |
|---|---|---|---|
| $0$ | $0000$ | $8$ | $1000$ |
| $1$ | $0001$ | $9$ | $1001$ |
| $2$ | $0010$ | $\mathrm{A}$ | $1010$ |
| $3$ | $0011$ | $\mathrm{B}$ | $1011$ |
| $4$ | $0100$ | $\mathrm{C}$ | $1100$ |
| $5$ | $0101$ | $\mathrm{D}$ | $1101$ |
| $6$ | $0110$ | $\mathrm{E}$ | $1110$ |
| $7$ | $0111$ | $\mathrm{F}$ | $1111$ |
Pentru o cifră octală, folosește doar ultimii trei biți din tabel: $5 = 101_2,$ $7 = 111_2.$ Ca să convertești un număr binar în hexazecimal, desparte-i bițile în grupuri de câte patru începând din dreapta, adaugă zerouri la stânga dacă primul grup rămâne incomplet și înlocuiește fiecare grup cu cifra lui. Pentru a trece în octal, folosește grupuri de câte trei. Pentru conversia inversă, scrie fiecare cifră cu patru biți (sau cu trei în octal).
Exemplul 15. Convertește $10110110_2$ în hexazecimal și în octal.
${10110110_2}={1011\ 0110_2}={\mathrm{B6}_{16},}$
${10110110_2}={010\ 110\ 110_2}={266_8.}$
Verificare: ${\mathrm{B6}_{16}}={11\cdot 16 + 6}={182}$ și ${266_8}={2\cdot 64 + 6\cdot 8 + 6}={182.}$
Exemplul 16. Scrie $\mathrm{3F}_{16}$ și $\mathrm{7E9}_{16}$ în binar, iar $753_8$ în hexazecimal.
${\mathrm{3F}_{16}}={0011\ 1111_2}={111111_2,}$
${\mathrm{7E9}_{16}}={0111\ 1110\ 1001_2}={11111101001_2.}$
Între octal și hexazecimal se trece prin binar: $753_8 = 111\ 101\ 011_2,$ iar în grupuri de câte patru din dreapta aceasta este $1\ 1110\ 1011_2 = \mathrm{1EB}_{16}.$ Cele două numere sunt egale cu $491.$
De aceea programatorilor le place hexazecimalul: două cifre hexazecimale sunt exact un octet, opt biți. Într-o pagină web, o culoare se scrie adesea cu trei octeți: unul pentru roșu, unul pentru verde și unul pentru albastru. De exemplu, #FF8800 înseamnă roșu $\mathrm{FF}_{16} = 255,$ verde $88_{16} = 136$ și albastru $0,$ adică o nuanță de portocaliu.
Bazele 12 și 60
Sistemul duodecimal
Numărarea din doisprezece în doisprezece, sistemul duodecimal, dăinuie în duzini ($12$) și grosuri ($12^2 = 144$), în cele $12$ luni ale anului și în cele $12$ ore ale ceasului. Avantajul lui este că $12$ are mai mulți divizori decât $10\text{:}$ $2,$ $3,$ $4$ și $6,$ pe când $10$ are doar $2$ și $5.$ De aceea jumătățile, treimile, sferturile și șesimile se scriu cu puține cifre în baza $12\text{:}$ $\frac{1}{2} = 0{,}6_{12},$ $\frac{1}{3} = 0{,}4_{12},$ $\frac{1}{4} = 0{,}3_{12},$ $\frac{1}{6} = 0{,}2_{12},$ pe când în zecimal $\frac{1}{3} = 0{,}\overline{3}$ nu se termină niciodată. Cele două cifre suplimentare pentru zece și unsprezece se scriu aici $\mathrm{A}$ și $\mathrm{B};$ unele cărți folosesc alte semne, cum ar fi t și e (de la englezescul ten și eleven).
Exemplul 17. Convertește $143\,131$ în baza $12$ și apoi din nou în zecimal.
| Împărțire | Cât | Rest |
|---|---|---|
| $143\,131 \div 12$ | $11\,927$ | $7$ |
| $11\,927 \div 12$ | $993$ | $11 = \mathrm{B}$ |
| $993 \div 12$ | $82$ | $9$ |
| $82 \div 12$ | $6$ | $10 = \mathrm{A}$ |
| $6 \div 12$ | $0$ | $6$ |
Deci $143\,131 = \mathrm{6A9B7}_{12}.$ Înapoi în zecimal: ${\mathrm{6A9B7}_{12}}={6\cdot 12^4 + 10\cdot 12^3}+{9\cdot 12^2 + 11\cdot 12 + 7}={124\,416 + 17\,280}+{1296 + 132 + 7}={143\,131.}$
Sistemul sexagesimal
Babilonienii numărau în baza $60,$ și o folosim și acum pentru timp și unghiuri. Aici fiecare „cifră” este un număr de la $0$ la $59,$ scris în zecimal. O durată de $2$ h $15$ min $30$ s este numărul în baza $60$ cu cifrele $2,$ $15$ și $30\text{:}$ și este egală cu ${2\cdot 60^2 + 15\cdot 60 + 30}={8130}$ secunde. În sens invers, se împarte la $60\text{:}$ $10\,000 = 60\cdot 166 + 40$ și $166 = 60\cdot 2 + 46,$ deci $10\,000$ secunde înseamnă $2$ h $46$ min $40$ s. Unghiurile se măsoară la fel: $12^\circ 30' = 12{,}5^\circ,$ deoarece $30' = \frac{30}{60}$ de grad.
Biți, octeți și zecimal codificat binar
Un grup de $8$ biți este un octet (byte). Cu $n$ biți se pot scrie $2^n$ numere diferite, de la $0$ la $2^n-1.$ Un octet păstrează numerele de la $0$ la $255;$ doi octeți, de la $0$ la $65\,535;$ iar $32$ biți dau $2^{32} = 4\,294\,967\,296$ valori diferite, ceva mai mult de patru miliarde.
Multe calculatoare de buzunar, ceasuri digitale și aparate de măsură păstrează fiecare cifră zecimală în propriul grup de patru biți. Aceasta se numește zecimal codificat binar (BCD, de la englezescul binary-coded decimal). De exemplu, $1546$ în BCD este $0001\ 0101\ 0100\ 0110,$ câte un grup pentru fiecare dintre cifrele $1,$ $5,$ $4$ și $6,$ pe când în binar pur $1546 = 11000001010_2.$ BCD-ul are nevoie de mai mulți biți, aici $16$ în loc de $11,$ dar fiecare cifră tastată se păstrează ca atare, numărul este ușor de afișat pe ecran cifră cu cifră, iar o fracție zecimală ca $0{,}1$ se păstrează exact.
Probleme pentru exersat
Rezolvă problemele și apoi deschide-le ca să vezi răspunsurile. Îți poți verifica rezultatele cu calculatorul de la începutul acestei pagini.
1. Convertește $10110_2$ în zecimal.
${10110_2}={16 + 4 + 2}={22.}$ Răspuns: $22.$
2. Convertește $1111111_2$ în zecimal.
Șapte de 1: ${1 + 2 + 4 + 8}+{16 + 32 + 64}={127,}$ sau, mai repede, ${1111111_2}={2^7 - 1}={127.}$ Răspuns: $127.$
3. Convertește $45$ în binar.
${45}={32 + 8 + 4 + 1}={2^5 + 2^3 + 2^2 + 2^0.}$ Răspuns: $101101_2.$
4. Convertește $200$ în binar.
$200 = 128 + 64 + 8.$ Răspuns: $11001000_2.$
5. Convertește $777_8$ și $\mathrm{1A3}_{16}$ în zecimal.
${777_8}={7\cdot 64 + 7\cdot 8 + 7}={511}={8^3 - 1}$ și ${\mathrm{1A3}_{16}}={256 + 10\cdot 16 + 3}={419.}$ Răspuns: $511$ și $419.$
6. Convertește $100$ în baza $3.$
$100 = 3\cdot 33 + 1,$ $33 = 3\cdot 11 + 0,$ $11 = 3\cdot 3 + 2,$ $3 = 3\cdot 1 + 0,$ $1 = 3\cdot 0 + 1.$ Citind resturile de jos în sus obținem $10201_3.$ Verificare: $81 + 2\cdot 9 + 1 = 100.$ Răspuns: $10201_3.$
7. Convertește $2000$ în hexazecimal.
$2000 = 16\cdot 125 + 0,$ $125 = 16\cdot 7 + 13$ și $7 = 16\cdot 0 + 7,$ cu $13 = \mathrm{D}.$ Citite de jos în sus, resturile sunt $7,$ $\mathrm{D},$ $0.$ Verificare: ${7\cdot 256 + 13\cdot 16}={1792 + 208}={2000.}$ Răspuns: $\mathrm{7D0}_{16}.$
8. Convertește $11010111_2$ în octal și în hexazecimal.
$011\ 010\ 111_2 = 327_8$ și $1101\ 0111_2 = \mathrm{D7}_{16};$ ambele sunt egale cu $215.$ Răspuns: $327_8$ și $\mathrm{D7}_{16}.$
9. Convertește $\mathrm{3B}_{16}$ și $57_8$ în binar.
$\mathrm{3B}_{16} = 0011\ 1011_2$ și $57_8 = 101\ 111_2.$ Răspuns: $111011_2$ și $101111_2.$
10. Adună $1011_2 + 1101_2.$
De la dreapta la stânga: $1 + 1 = 10_2,$ scriem $0$ și reținem $1;$ $1 + 0 + 1 = 10_2,$ scriem $0$ și reținem $1;$ $0 + 1 + 1 = 10_2,$ scriem $0$ și reținem $1;$ $1 + 1 + 1 = 11_2,$ scriem $1$ și reținem $1.$ Verificare: $11 + 13 = 24 = 16 + 8.$ Răspuns: $11000_2.$
11. Scade $10010_2 - 1011_2.$
De la dreapta la stânga: pentru $0 - 1$ împrumutăm de la a doua poziție: $10_2 - 1 = 1.$ Acum a doua coloană este $0 - 1,$ iar a treia și a patra poziție sunt $0,$ deci împrumutăm de la a cincea: aceasta rămâne $0,$ a patra și a treia poziție devin $1,$ iar a doua coloană dă $10_2 - 1 = 1.$ Apoi $1 - 0 = 1,$ $1 - 1 = 0,$ $0 - 0 = 0.$ Verificare: $18 - 11 = 7.$ Răspuns: $111_2.$
12. Înmulțește $1111_2\cdot 111111_2$ și verifică rezultatul în zecimal.
Rândurile sunt $111111_2$ deplasat cu $0,$ $1,$ $2$ și $3$ poziții. Adună-le unul după altul: ${111111_2 + 1111110_2}={10111101_2,}$ ${10111101_2}+{11111100_2}={110111001_2,}$ ${110111001_2}+{111111000_2}={1110110001_2.}$ Verificare: $1111_2 = 15,$ $111111_2 = 63$ și ${15\cdot 63}={945}={512 + 256 + 128}+{32 + 16 + 1.}$ Răspuns: $1110110001_2.$
13. Împarte $11110000010_2 \div 11111_2$ și verifică rezultatul în zecimal.
$11110000010_2 = 1922,$ $11111_2 = 31$ și ${1922\div 31}={62}={32 + 16 + 8 + 4 + 2.}$ Răspuns: $111110_2.$
14. Convertește $0{,}375$ și $0{,}8$ în binar.
$0{,}375\cdot 2 = 0{,}75,$ $0{,}75\cdot 2 = 1{,}5,$ $0{,}5\cdot 2 = 1,$ deci $0{,}375 = 0{,}011_2.$ Pentru $0{,}8\text{:}$ $0{,}8\cdot 2 = 1{,}6,$ $0{,}6\cdot 2 = 1{,}2,$ $0{,}2\cdot 2 = 0{,}4,$ $0{,}4\cdot 2 = 0{,}8,$ și $0{,}8$ apare din nou. Răspuns: $0{,}011_2$ și $0{,}\overline{1100}_2.$
15. Ce fracții sunt $0{,}\overline{1}_2$ și $0{,}\overline{011}_2?$
Pentru $x = 0{,}\overline{1}_2\text{:}$ $2x = 1{,}\overline{1}_2 = 1 + x,$ deci $x = 1,$ la fel ca $0{,}\overline{9} = 1$ în zecimal. Pentru $y = 0{,}\overline{011}_2\text{:}$ $8y = 11{,}\overline{011}_2 = 3 + y,$ deci $7y = 3.$ Răspuns: $1$ și $\frac{3}{7}.$
16. În ce bază este adevărată egalitatea $13 + 5 = 20?$
În baza $b$ aceasta înseamnă $(b + 3) + 5 = 2b,$ deci $b = 8.$ Verificare: $13_8 = 11,$ $11 + 5 = 16 = 20_8.$ Răspuns: în baza $8.$
17. Câte numere diferite se pot scrie cu $10$ biți și care este cel mai mare dintre ele?
Fiecare bit este $0$ sau $1,$ deci există $2^{10} = 1024$ numere, de la $0$ la $1111111111_2 = 2^{10} - 1.$ Răspuns: $1024$ numere; cel mai mare este $1023.$
Vezi și: numere romane · puteri și exponenți · criterii de divizibilitate

Meniu