Los valores de posición en binario
Los números decimales usan diez dígitos, y cada posición vale diez veces la posición de su derecha: unidades, decenas, centenas. El binario funciona igual con dos dígitos, 0 y 1, así que cada posición vale el doble que la de su derecha. El bit de más a la derecha vale 1, el siguiente 2, luego 4, 8, 16 y así sucesivamente, siempre el doble.
Ocho bits forman un byte, y vale la pena memorizar los valores de posición de un byte, porque aparecen por todas partes en informática, desde el tamaño de los archivos hasta las máscaras de red.
| Posición del bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Valor de posición | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
De binario a decimal, paso a paso
Toma como ejemplo 11010110. Escribe los valores de posición encima o debajo de los dígitos, empezando por el 1 a la derecha. Después suma solo los valores de posición que tienen un 1 debajo: 128 + 64 + 16 + 4 + 2 = 214. Ese es todo el método, y funciona con números de cualquier longitud.
Con números largos, separa los bits en grupos de cuatro desde la derecha y pasa cada grupo a hexadecimal, y de ahí a decimal, o simplemente pega el número en el convertidor, que funciona con cualquier longitud y no redondea.
| Binario | Cálculo | Decimal |
|---|---|---|
| 101 | 4 + 1 | 5 |
| 1111 | 8 + 4 + 2 + 1 | 15 |
| 100000 | 32 | 32 |
| 11010110 | 128 + 64 + 16 + 4 + 2 | 214 |
| 11111111 | 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 | 255 |
| 11111101010 | 1024 + 512 + 256 + 128 + 64 + 32 + 8 + 2 | 2026 |
Pruébalo aquí: Binario a decimal
Abrir la herramienta completaDe decimal a binario: dividir entre dos
La dirección contraria usa divisiones sucesivas. Divide el número entre 2, apunta el resto (0 o 1) y sigue con el cociente hasta llegar a 0. Los restos leídos del último al primero dan el número binario.
Para 214: 214 / 2 = 107, resto 0; 107 / 2 = 53, resto 1; 53 / 2 = 26, resto 1; 26 / 2 = 13, resto 0; 13 / 2 = 6, resto 1; 6 / 2 = 3, resto 0; 3 / 2 = 1, resto 1; 1 / 2 = 0, resto 1. Al leer los restos de abajo arriba sale 11010110, el número con el que empezamos más arriba.
Otra forma es restar el mayor valor de posición que quepa: 214 menos 128 deja 86, menos 64 deja 22, menos 16 deja 6, menos 4 deja 2, menos 2 deja 0. Escribe un 1 por cada valor de posición que hayas usado y un 0 por los demás.
Hexadecimal: cuatro bits por dígito
Los números binarios largos son difíciles de leer, así que los programadores los escriben en hexadecimal. El hexadecimal tiene dieciséis dígitos, del 0 al 9 y de la A a la F, y un dígito hexadecimal equivale exactamente a cuatro bits. Para convertir, separa el número binario en grupos de cuatro desde la derecha y sustituye cada grupo con la tabla. 1101 0110 se convierte en D6, y D6 en decimal es 13 x 16 + 6 = 214.
| Binario | Hex | Decimal | Binario | Hex | Decimal |
|---|---|---|---|---|---|
| 0000 | 0 | 0 | 1000 | 8 | 8 |
| 0001 | 1 | 1 | 1001 | 9 | 9 |
| 0010 | 2 | 2 | 1010 | A | 10 |
| 0011 | 3 | 3 | 1011 | B | 11 |
| 0100 | 4 | 4 | 1100 | C | 12 |
| 0101 | 5 | 5 | 1101 | D | 13 |
| 0110 | 6 | 6 | 1110 | E | 14 |
| 0111 | 7 | 7 | 1111 | F | 15 |
Números negativos: complemento a dos
Los ordenadores guardan los enteros negativos en complemento a dos. El bit más alto de un número de ancho fijo tiene un peso negativo: en 8 bits, el bit de más a la izquierda vale -128 en lugar de 128. Así, 11111111 es -128 + 127 = -1, y 10000000 es -128.
Para obtener el patrón de un número negativo, escribe el valor positivo en binario, invierte cada bit y suma 1. Para -6 en 8 bits: 6 es 00000110, invertido 11111001, más 1 da 11111010. Esos mismos bits leídos como número sin signo son 250, y por eso importa saber si un valor lleva signo. En el convertidor, activa Con signo y elige el ancho en bits para ver las dos lecturas.
Fracciones binarias
Los dígitos después de la coma binaria valen un medio, un cuarto, un octavo y así sucesivamente. 0,101 en binario es 0,5 + 0,125 = 0,625. Muchas fracciones decimales sencillas no se pueden escribir exactamente en binario: 0,1 se convierte en 0,000110011001100... con 0011 repitiéndose sin fin. Por eso 0,1 + 0,2 no da exactamente 0,3 en la mayoría de los lenguajes de programación. En el convertidor la parte fraccionaria se escribe con punto, como en el código (0.101), y los dígitos periódicos se muestran entre paréntesis, por ejemplo 0.0(0011).