Què és un sistema posicional
En el nombre decimal 4.095 el 4 no val 4: val 4.000, perquè és al lloc dels milers. Cada posició multiplica el dígit per una potència de 10 (1, 10, 100, 1.000…). Aquest és el sistema posicional, i la base és la quantitat de dígits diferents que es fan servir: deu en el decimal.
El binari funciona igual, però amb base 2: només existeixen el 0 i l'1, i cada lloc val el doble que l'anterior. L'hexadecimal fa servir base 16: els setze dígits són del 0 al 9 i les lletres de la A a la F, i cada lloc val 16 vegades l'anterior. Els ordinadors treballen en binari perquè un circuit només ha de distingir dos estats (apagat i encès), i l'hexadecimal és una manera curta d'escriure aquests bits.
| Posició (de dreta a esquerra) | Valor en binari | Valor en hexadecimal |
|---|---|---|
| 1a | 1 | 1 |
| 2a | 2 | 16 |
| 3a | 4 | 256 |
| 4a | 8 | 4.096 |
| 5a | 16 | 65.536 |
| 6a | 32 | 1.048.576 |
| 7a | 64 | 16.777.216 |
| 8a | 128 | 268.435.456 |
De binari a decimal, a mà
S'escriu cada dígit amb el valor del seu lloc i se sumen només els llocs on hi ha un 1. Exemple amb 1101: de dreta a esquerra els llocs valen 1, 2, 4 i 8.
- Escriu el número i a sota el valor de cada posició: 1 1 0 1 sobre 8 4 2 1.
- Fixa't en què hi ha a cada lloc: un 1 al del 8, un 1 al del 4, un 0 al del 2 i un 1 al de l'1.
- Ignora els llocs que tenen un 0 (aquí, el del 2).
- Suma: 8 + 4 + 0 + 1 = 13. Per tant, 1101 en binari és 13 en decimal.
Amb més dígits és el mateix: 11111111 és 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255, el valor més gran que cap en 8 bits. I 10110110 és 128 + 32 + 16 + 4 + 2 = 182.
De decimal a binari, per divisions successives
Es divideix el número per 2 una vegada i una altra, anotant el residu de cada divisió (sempre 0 o 1), fins a arribar a quocient 0. Els residus, llegits de baix cap amunt, són el número binari. Exemple amb 45:
- 45 ÷ 2 = 22, residu 1
- 22 ÷ 2 = 11, residu 0
- 11 ÷ 2 = 5, residu 1
- 5 ÷ 2 = 2, residu 1
- 2 ÷ 2 = 1, residu 0
- 1 ÷ 2 = 0, residu 1
Llegint els residus de baix cap amunt queda 101101. Per comprovar-ho, suma: 32 + 8 + 4 + 1 = 45.
Hi ha un mètode alternatiu que molts prefereixen: restar potències de 2 de la més gran a la més petita. Per a 200: hi entra el 128 (queda 72), hi entra el 64 (queda 8), no hi entren 32 ni 16, però sí el 8 (queda 0). Els llocs utilitzats són 128, 64 i 8, de manera que 200 = 11001000.
Hexadecimal: setze dígits i una taula per tenir a mà
Com que no existeixen dígits per al 10 fins al 15, es fan servir les lletres A, B, C, D, E i F. Un dígit hexadecimal equival exactament a quatre bits (un «nibble»), i per això convé tant: un byte, de 8 bits, s'escriu amb només dos dígits hexadecimals.
Per passar d'hexadecimal a decimal, multiplica cada dígit per la potència de 16 del seu lloc i suma. Per exemple, 3F = 3 × 16 + 15 = 63 i A3 = 10 × 16 + 3 = 163.
| Decimal | Binari (4 bits) | Octal | Hexadecimal |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 2 | 0010 | 2 | 2 |
| 3 | 0011 | 3 | 3 |
| 4 | 0100 | 4 | 4 |
| 5 | 0101 | 5 | 5 |
| 6 | 0110 | 6 | 6 |
| 7 | 0111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
Per què es fa servir l'hexadecimal: bytes, colors i adreces
Un byte són 8 bits i va de 0 a 255 (00000000 a 11111111). Escriure bits a mà és lent i propens a errors; en hexadecimal el mateix byte són dos caràcters, de 00 a FF. Per passar de binari a hexadecimal, separa els bits en grups de quatre des de la dreta i substitueix cada grup pel seu dígit de la taula. Exemple: 11010111 es divideix en 1101 i 0111, que són D i 7, així que val D7. Com a decimal és 13 × 16 + 7 = 215.
El cas més conegut són els colors web. A #FF8800 hi ha tres bytes: FF per al vermell (255), 88 per al verd (136) i 00 per al blau (0). És un taronja intens: tot el vermell, una mica més de la meitat del verd i res de blau. L'hexadecimal també apareix en adreces de memòria, en codis d'error i en identificadors de xarxa.
De text a binari amb ASCII
Un ordinador desa cada lletra com un número, i aquest número com a bits. A la taula ASCII la A és 65, que en binari de 8 bits és 01000001. La paraula «Hi» són dues lletres: H és 72 (01001000) i i és 105 (01101001), així que s'escriu 01001000 01101001. Amb «Hola» són 72, 111, 108 i 97, és a dir 01001000 01101111 01101100 01100001, o en hexadecimal 48 6F 6C 61.
L'eina fa servir la codificació UTF-8: per a lletres bàsiques de l'anglès cada caràcter ocupa un byte de 8 bits, però una ñ, una lletra amb accent o un emoji ocupen diversos bytes, per la qual cosa donen més de 8 bits. Per exemple, la ñ són dos bytes: 11000011 10110001 (C3 B1 en hexadecimal).
Com fer tot això amb l'eina
El convertidor «Binari, decimal i hexadecimal» serveix per comprovar els teus càlculs a mà o per resoldre números llargs sense errors.
- Escriu el número al camp de la seva base: «Decimal (base 10)», «Binari (base 2)», octal o «Hexadecimal (base 16)». Els altres tres s'omplen sols.
- Si el dígit no correspon a la base (un 2 en binari, per exemple), l'eina t'ho avisa.
- Per a text, escriu-lo al camp «Text» i mira «Binari (8 bits per caràcter)» i l'hexadecimal per bytes. També pots enganxar bits en grups de 8 per tornar al text.
- Per a bases estranyes, fes servir «Qualsevol base (de 2 a 36)»: tries la base d'origen, la de destinació i el número.
Els límits: només converteix enters no negatius (sense decimals ni signe) i no posa zeros a l'esquerra per tu, així que si vols 8 bits fixos has d'omplir-ho a mà (13 és 00001101). Res del que escrius surt del teu navegador.
Errors comuns
- Llegir els residus al revés: en les divisions successives el primer residu és el dígit de més a la dreta, no el de més a l'esquerra.
- Oblidar els zeros a l'esquerra quan fan falta: 13 són 1101, però com a byte són 00001101. Importa quan la longitud és part de la dada, com en un color o en una màscara de xarxa.
- Confondre la lletra O amb el zero o la B hexadecimal (11) amb un 8 en copiar. En hexadecimal les lletres valen igual en majúscula i en minúscula, però no són el mateix que un dígit.
- Deixar el prefix 0x o el signe # en convertir: són només marques que el número és hexadecimal i cal treure'ls abans d'enganxar.
- Pensar que 10 en binari és deu: és dos. El mateix «10» val 2, 10 o 16 segons la base.
Exercicis resolts per practicar
Intenta resoldre cada un abans de mirar la resposta i comprova-ho després amb l'eina.
- Passa 10110110 a decimal i a hexadecimal. Resposta: 128 + 32 + 16 + 4 + 2 = 182; en grups de quatre, 1011 0110 = B6.
- Passa 200 a binari i a hexadecimal. Resposta: 11001000 i C8 (12 × 16 + 8 = 200).
- Passa 7F a binari. Resposta: 7 = 0111 i F = 1111, per tant 01111111, que en decimal és 127.
- Escriu «OK» en binari. Resposta: O és 79 i K és 75, és a dir 01001111 01001011.
Preguntes freqüents
Com passo 1101 de binari a decimal?
Sumes els valors dels llocs on hi ha un 1: 8 + 4 + 1 = 13. El segon dígit des de la dreta és un 0, així que el 2 no se suma.
Quant és 255 en binari i en hexadecimal?
255 és 11111111 en binari i FF en hexadecimal. És el valor més gran que cap en un byte de 8 bits.
Per què l'hexadecimal fa servir lletres?
Perquè necessita setze símbols diferents i el sistema decimal només n'aporta deu (0 a 9). Per això A val 10, B val 11, C val 12, D val 13, E val 14 i F val 15.
Quants números diferents es poden escriure amb 8 bits?
256, del 0 al 255. En general, amb n bits es poden representar 2 elevat a n valors.
L'eina converteix números negatius o amb decimals?
No, només enters no negatius. Per a text fa servir UTF-8, així que les lletres amb accent i els emojis donen més de 8 bits.