Sistemele de baze, cum ar fi cele binare și hexazecimale, par un pic ciudate la început. Cheia este înțelegerea modului în care diferitele sisteme „ticăie” ca un kilometraj atunci când sunt pline. Baza 10, sistemul nostru zecimal, „ticăie” atunci când primește 10 elemente, creând o nouă cifră. Așteptăm 60 de secunde înainte de a „ticăi” la un nou minut. Sistemul hexazecimal și binar sunt similare, dar ticăie la fiecare 16 și, respectiv, 2 elemente.
Încercați să convertiți numerele în hexazecimal și binar aici:
Cu mult timp în urmă: Numere unitare
Cu mult timp în urmă, nu aveam sisteme de bază! Era o urcare în ambele sensuri, prin zăpadă și căldură toridă. Când vroiai să numeri unu, scriai:
l
Când vroiai 5, scriai
lllll
Și clar, 1 + 5 = 6
l + lllll = lllllll
Este cel mai simplu mod de numărare.
Intră romanii
În cifrele romane, doi era unu, de două ori. Trei era unu, de trei ori:
one = Itwo = IIthree = III
Cu toate acestea, ei au decis că pot face mai bine decât vechea tradiție a liniilor în nisip. Pentru cinci, am putea folosi V pentru a reprezenta lllll și să obținem ceva de genul
l + V = Vl
Nu-i rău, nu-i așa? Și, bineînțeles, există mult mai multe simboluri (L, C, M, etc.) pe care le puteți folosi.
Punctul cheie este că V și lllll sunt două moduri de a codifica numărul 5.
Dați fiecărui număr un nume
O altă descoperire a fost realizarea faptului că fiecare număr poate fi propriul său concept distinct. În loc să reprezentați trei ca o serie de unu, dați-i propriul său simbol: „3″. Faceți acest lucru de la unu la nouă și veți obține simbolurile:
1 2 3 4 5 6 7 8 9
Românii au fost aproape, atât de aproape, dar au dat simboluri unice doar pentru 5, 10, 50, 100, 1000, etc.
Utilizați poziția voastră
Acum, în mod clar, nu puteți da fiecărui număr un simbol propriu. Pur și simplu sunt prea multe.
Dar observați o idee despre cifrele romane: ele folosesc poziția simbolurilor pentru a indica semnificația.
IV înseamnă „scade 1 din 5″
și VI înseamnă „adaugă 1 la 5″.
În sistemul nostru numeric, folosim poziția într-un mod similar. Întotdeauna adunăm și niciodată nu scădem. Și fiecare poziție este cu 10 mai mare decât cea dinaintea ei.
Alegerea noastră pentru baza 10
De ce am ales să înmulțim cu 10 de fiecare dată? Cel mai probabil pentru că avem 10 degete.
Un lucru de care trebuie să vă dați seama este că aveți nevoie de suficiente cifre pentru a vă „umple” până când ajungeți la următorul număr. Permiteți-mi să vă demonstrez.
Dacă vrem să rulăm kilometrajul la fiecare 10, ca să spunem așa, avem nevoie de simboluri pentru numerele de la unu la nouă; nu am ajuns încă la zece. Imaginați-vă că numerele ticăie încet în sus – în ce moment întoarceți următoarea unitate și începeți de la nimic?
Introduceți zero
Și ce se întâmplă când ajungem la zece? Cum arătăm că vrem exact un „zece” și nimic în coloana „unu”?
Utilizăm zero, numărul care nu există. Zero este un concept destul de complex, este un loc rezervat, un gol, un spațiu și multe altele. Este suficient să spunem că zero este una dintre marile invenții ale tuturor timpurilor.
Zero ne permite să avem un spațiu gol, ceva ce romanii nu aveau. Uitați-vă cât de neîndemânatice sunt numerele lor fără el.
Celebrul roman al lui George Orwell „1984″ ar fi „MCMLXXXIV”! Se rostogolește bine pe limbă, nu-i așa?
Considerând și alte baze
Amintiți-vă că am ales să ne rostogolim kilometrajul la fiecare zece. Numărătoarea noastră arată astfel:
123456789 (uh oh, I'm getting full!)10 (ticked over – start a new digit)
Ce-ar fi dacă am trece la 60 atunci când numărăm, așa cum facem cu secundele și minutele?
1 second2345…58591:00 (60 seconds aka 1 minute. We've started a new digit.)
Totu-i în regulă până acum, nu? Observați că folosim două puncte (:) pentru a indica faptul că ne aflăm la o nouă „cifră”. În baza 10, fiecare cifră poate sta de sine stătător.
Încercați baza 16
Dacă vrem baza 16, am putea face ceva similar:
123456789101112131415 (we're getting full)1:00 (16 – we've started a new digit)
Dar nu vrem să scriem numere hexazecimale cu notația de două puncte (chiar dacă am putea). Am prefera să gătim simboluri separate pentru 10-15, astfel încât să putem scrie numerele așa cum suntem obișnuiți. Am rămas fără numere (1-9 deja folosite, cu 0 ca simbol de rezervă), așa că avem nevoie de alte simboluri. Am putea să folosim niște linii mâzgălite sau alte forme, dar convenția este de a folosi litere, în stil roman. La fel cum 5 a devenit V, programatorii folosesc literele A-F pentru a obține suficiente cifre până la 16. Adică,
123456789A (10 – we're using the symbol "A")B (11)C (12)D (13)E (14)F (15 – uh oh, we're getting full)10 (16 – we start a new digit)
123456789A (10 – we're using the symbol "A")B (11)C (12)D (13)E (14)F (15 – uh oh, we're getting full)10 (16 – we start a new digit)
Ahah! Acum putem folosi câte o cifră pentru fiecare „loc” și știm că 10 înseamnă de fapt că am „bifat la 16″ o dată.
20 înseamnă că am bifat la 16 de două ori (32).
25 înseamnă că am bifat la 16 de două ori (ceea ce ne dă 32) și am mai adăugat un 5 în plus. Totalul este 32 + 5 = 37.
Revizuire rapidă
Cu mine până acum? Este destul de mișto, nu-i așa? Putem număra în orice sistem dorim. De asemenea, observați că baza 16 este mai „eficientă din punct de vedere al spațiului”, în sensul că putem scrie un număr precum 11 într-o singură cifră: B.
Baza 16 nu este de fapt atât de diferită de baza 10, doar că ne ia mai mult timp să o umplem.
Marea lume a binarului
Am văzut o mulțime de sisteme de baze, de la unarul prea simplu, la cifrele romane nebănuite, la baza 10 constantă și la baza 16 compactă.
Ce este grozav la binar? În spiritul menținerii lucrurilor simple, este cel mai simplu sistem numeric care are conceptul de „tic-tac”. Unarul, unde scriem doar 1, 11, 111… continuă la nesfârșit. Binarul, cu două opțiuni (1 și 0) arată astfel:
1: 12: 10 (we're full – tick over)3: 114: 100 (we're full again – tick over)5: 1016: 1107: 1118: 1000 (tick over again)…
și așa mai departe.
Pentru că binarul este atât de simplu, este foarte ușor de construit în hardware. Aveți nevoie doar de lucruri care se pot activa sau dezactiva (reprezentând 1 și 0), mai degrabă decât de lucruri care au 10 stări posibile (pentru a reprezenta zecimalul).
Pentru că este atât de simplu, binarul este, de asemenea, rezistent la erori. Dacă semnalul dvs. este „parțial pornit” (să spunem 0,4), puteți presupune că este un zero. Iar dacă este în mare parte pornit (să zicem 0,8), atunci puteți presupune că este un 1. Dacă folosiți un sistem cu 10 stări posibile, este dificil să vă dați seama când s-a produs o eroare. Acesta este unul dintre motivele pentru care semnalele digitale sunt atât de rezistente la zgomot.
Alte exemple de baze
Utilizăm tot timpul alte baze, chiar și baze care se schimbă dinamic. De obicei nu ne gândim la ele în acest fel:
Orele, minutele, secundele: 1:32:04
- Știm că este vorba de 1 oră, 32 de minute, 4 secunde. În secunde, asta înseamnă 16060 + 32*60 + 4.
Picioare și centimetri: 3′ 5″
- Aceasta este 3 picioare, 5 inci sau 3 * 12 + 5 inci.
Libri și uncii: 8 lbs, 5 oz
- Din moment ce o livră este 16 oz, Aceasta este 8 * 16 + 5 oz. Am folosit tot timpul un sistem numeric în baza 16!
Gânduri parțiale
„10″ în orice sistem numeric indică baza și înseamnă că am bifat o dată. 10 în binar înseamnă doi, 10 în zecimal înseamnă zece, iar 10 în hexazecimal înseamnă șaisprezece.
Cum poți să ții aceste numere la distanță? Programatorii vor scrie adesea „0b” în fața numerelor binare. Astfel, 2 în binar este
0b10
În mod similar, ei vor scrie 0x în fața numerelor hexazecimale. Deci 16 în hexagonal este:
0×10
Dacă nu există niciun simbol (0b sau 0x) în față, presupunem că este baza 10, un număr obișnuit.
Acum mergeți și bucurați-vă de noile voastre cunoștințe!
Alte postări din această serie
- Sisteme de numere și baze
- Ghid rapid pentru GUID-uri
- Înțelegerea rădăcinii pătrate inverse rapide a lui Quake
- O introducere simplă în calculatoare Networking
- Înțelegerea ordinii Big și Little Endian a octeților
- Unicode și tu
- Un mic truc despre formatele de fișiere binare
- Algoritmi de sortare
Schimbarea a două variabile folosind XOR
.