Conversor de binario a decimal
Resultado
Decimal
- Valores posicionales
- 8 + 2 + 1
Este conversor de binario a decimal reescribe en base diez un número escrito en base dos. El valor no cambia: solo cambia su notación, y la notación posicional es todo lo que hay que entender. Un dígito vale su valor nominal multiplicado por una potencia de la base, y el sistema binario se limita a tomar el dos como esa base. La regla ya la conoces del decimal: el número 352 son tres centenas más cinco decenas más dos unidades, porque cada posición vale diez veces la de su derecha. En binario cada posición vale dos veces la de su derecha en lugar de diez veces, así que los pesos van 1, 2, 4, 8, 16, 32 y así sucesivamente, y los dígitos solo pueden ser 0 o 1. Convertir es entonces sumar las posiciones que llevan un 1 e ignorar las que llevan un 0: 1011 es 8 más 2 más 1, o sea 11. Esa suma es lo que esta página imprime debajo de la respuesta, un término por cada bit activo, porque es el paso que se estropea cuando se hace de cabeza —saltarse una posición, o empezar a contar por el extremo equivocado—. Los dígitos se leen de derecha a izquierda y no al revés: el bit de la derecha vale siempre 1, sea cual sea la longitud del número.
El valor de cada bit de un byte, del más a la izquierda al más a la derecha
| Bit | Potencia | Valor |
|---|---|---|
| 7 | 2⁷ | 128 |
| 6 | 2⁶ | 64 |
| 5 | 2⁵ | 32 |
| 4 | 2⁴ | 16 |
| 3 | 2³ | 8 |
| 2 | 2² | 4 |
| 1 | 2¹ | 2 |
| 0 | 2⁰ | 1 |
Esta es la regla con la que se hace la conversión, y es fija: no cambia cuando cambia la entrada de arriba, así que no hay contradicción cuando las dos parecen no coincidir. El panel responde por el número que se ha tecleado; la tabla responde a la pregunta más general de cuánto vale cada posición de un byte, que es la pregunta que va primero cuando todavía no se tiene un número en la mano. Lee las filas hacia abajo como una división por dos en cada paso y hacia arriba como una multiplicación, y el patrón se explica solo: el bit de la derecha vale 1 porque es la posición de las unidades, el de al lado vale 2 porque la base es dos, y cada paso a la izquierda dobla. El motivo de que se detenga tras ocho filas es que un byte es donde viven los valores que la gente convierte de verdad —una bandera de estado, un canal de color, una máscara de permisos— y una tabla que llegara hasta el bit cincuenta y tres sería un muro de números que nadie lee. Los bits activos de un número se leen en esta tabla y se suman, así que la tabla y la suma que aparece arriba están describiendo las mismas ocho posiciones de dos maneras distintas. Un aviso sobre la dirección: aquí los bits se numeran desde la derecha, de modo que el bit 0 es el último dígito, y un documento que numere sus bits desde la izquierda discrepará de esta tabla en todas las filas aunque esté diciendo lo mismo.
Fórmula
1011 = 1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 8 + 2 + 1 = 11
- binary
- El número que hay que leer, escrito en base dos. Sus dígitos son 0 y 1 y ningún otro, y el valor del conjunto depende de dónde se sienta cada dígito, no de cuántos dígitos haya
- 2ⁿ
- El peso de una posición: dos elevado a la distancia de esa posición al extremo derecho, contando la de la derecha como posición cero. La sucesión es 1, 2, 4, 8, 16, 32, 64, 128 y cada paso dobla al anterior
- dígito × 2ⁿ
- Un término suelto de la suma. Como el dígito es 0 o 1, la multiplicación nunca cambia nada: un 1 aporta su peso entero y un 0 no aporta absolutamente nada, y de ahí que la conversión se reduzca a seleccionar las posiciones que llevan un 1
- Σ
- La suma de todos los términos. Es la conversión completa: se suman los pesos de los bits activos y el total es el número en decimal
- 8 + 2 + 1
- La suma escrita con los términos nulos ya eliminados, que es como se hace a mano. 1011 tiene unos en las posiciones del 8, del 2 y del 1, y un cero en la del 4, así que el 4 no aparece nunca: verlo ausente es justamente el objetivo, porque ese es el paso que se pierde de vista
- 53 bits
- Cuánto puede medir la entrada: cincuenta y tres dígitos binarios, que son 9.007.199.254.740.991. Es la anchura a la que una máquina deja de distinguir enteros vecinos, así que una entrada más larga no se puede leer con exactitud y se rechaza en lugar de adivinarse
Es una conversión que hace falta en los dos sentidos de la lectura. El caso directo es un valor que ha llegado en binario y hay que entender: un byte de estado impreso por un depurador, la columna de banderas de un registro de hardware, una máscara de bits en un archivo de configuración, la salida de una herramienta de red o un ejercicio de clase en el que la respuesta se pide en base diez. El caso inverso es el razonamiento con potencias de dos que se esconde detrás de los números corrientes: si una cantidad es potencia de dos, cuál es la siguiente potencia de dos por encima de una cifra dada, cuántos bits hacen falta para guardar un valor o qué rango puede direccionar un bus de una anchura concreta. Todas esas preguntas se responden mirando qué posiciones están activas, es decir, leyendo el peso de cada bit. Los programadores se encuentran la misma suma al calcular una máscara de subred, al empaquetar varios valores pequeños en un entero o al comprobar qué opciones de un conjunto tiene habilitadas un número guardado. El desarrollo de valores posicionales es además lo que hace útil la página como material de estudio: la regla del acarreo y los pesos de las posiciones son las dos cosas que parecen arbitrarias hasta que la suma se escribe entera, y que la página escriba esa suma para lo que hayas tecleado convierte un ejemplo resuelto de un libro en una comprobación de tu propio intento. Para pasar de binario a decimal a mano esa suma es el método entero, sin ninguna división de por medio; el sentido contrario está en la página enlazada abajo, y si lo que necesitas es operar con dos números binarios, la calculadora binaria de la misma familia.
Ejemplos resueltos
Leer 1011
- Escribe los pesos debajo de los cuatro dígitos, empezando por la derecha: 1, 2, 4, 8
- Quédate con los dígitos que son 1 y descarta los que son 0: quedan el 8, el 2 y el 1
- La posición del 4 lleva un 0, así que no aporta nada y no aparece en la suma
- Súmalos: 8 + 2 + 1 = 11
El valor por defecto, y el que muestra el término que falta: 1011 tiene un cero en la posición de los cuatros, así que la suma se lee 8 + 2 + 1 y no 8 + 4 + 2 + 1. Leer los dígitos como si fueran decimales daría mil once, que es la manera más común de estropear esta conversión.
Leer un byte completo, 10110010
- Ocho dígitos significan que los pesos van desde 128 hasta 1
- Las posiciones activas son 128, 32, 16 y 2
- Súmalas: 128 + 32 = 160, más 16 son 176, más 2 son 178
- El valor más grande que cabe en un byte es 11111111, que es 255
Merece la pena trabajarlo una vez porque un byte es la anchura a la que llega casi todo valor binario en la práctica, y saber que el bit de la izquierda vale 128 y el de la derecha vale 1 es lo que hace legible un byte de un vistazo. Los mismos ocho dígitos leídos desde el otro extremo serían otra cosa, así que la dirección no es un detalle.
Los ceros a la izquierda no cambian el valor
- Los cuatro ceros de la izquierda ocupan las posiciones 128, 64, 32 y 16
- Un cero no aporta nada esté donde esté, así que esas posiciones se caen de la suma
- Lo que queda es el mismo 8 + 2 + 1 de antes, que da 11
Rellenar un valor hasta una anchura fija es lo normal —un byte se escribe 00001011 y no 1011 cuando la anchura importa—, así que el conversor tiene que aceptar las dos formas y dar el mismo resultado con cada una. Lo hace, y la suma que imprime es idéntica porque los ceros de la izquierda no llegan a entrar en ella.
Leer un valor negativo, -1011
- El signo menos no forma parte del número binario: es un signo delante de él
- Lee los dígitos como antes: 1011 es 8 + 2 + 1 = 11
- Vuelve a poner el signo: el valor es -11
El signo se queda fuera de los dígitos en vez de plegarse dentro, porque aquí no hay ninguna anchura fija en la que plegarlo. Un procesador que guardara -11 en ocho bits escribiría 11110101, que es una cadena de dígitos completamente distinta y depende de saber que la anchura es ocho. Esta página no tiene anchura, así que el signo sigue siendo un signo.
Limitaciones
Esta página solo lee números binarios enteros. No hay punto binario, así que no se acepta 1.01 y no se puede convertir: una lectura fraccionaria necesitaría una segunda regla sobre dónde cae el punto, y esa regla habría que enunciarla en cada entrada en lugar de suponerla. La entrada puede tener como máximo cincuenta y tres dígitos, que son 9.007.199.254.740.991 en decimal; los valores más largos no caben con exactitud en una máquina y se rechazan en lugar de redondearse. Los ceros a la izquierda se aceptan y se ignoran, así que 00001011 y 1011 son el mismo número y la suma que se imprime para ellos es idéntica. Un signo menos delante se acepta y se arrastra a las dos salidas. La página convierte de binario a decimal; el sentido contrario es otra página enlazada abajo, y las lecturas hexadecimales están en una tercera. No hace aritmética ni operaciones a nivel de bit: aquí no hay AND, ni OR, ni XOR, ni desplazamiento de bits.
Preguntas frecuentes
- ¿Cómo paso de binario a decimal a mano?
- Escribe los pesos debajo de los dígitos, empezando en 1 por la derecha y doblando cada vez que avanzas a la izquierda: 1, 2, 4, 8, 16 y así. Después quédate con los valores que quedan debajo de un 1, tira los que quedan debajo de un 0 y suma lo que sobre. Para 1011 eso deja 8, 2 y 1, que son 11. Las dos formas de estropearlo son leer los dígitos de izquierda a derecha en lugar de derecha a izquierda y sumar un peso que lleva un cero; la suma que imprime esta página te muestra las dos, porque solo lista los términos que cuentan.
- ¿Por qué la respuesta no incluye los pesos que llevan un cero debajo?
- Porque no aportan nada, y escribirlos taparía la parte que importa. Cero por cualquier peso es cero, así que un término como 0×4 se puede eliminar sin alterar el total. La suma se muestra como 8 + 2 + 1 y no como 8 + 0 + 2 + 1 precisamente para que el cuatro que falta se vea: comprobar qué posiciones están ausentes es la manera de verificar que has alineado bien los dígitos desde el principio.
- ¿Un cero a la izquierda cambia el número?
- No. Los ceros de la izquierda ocupan posiciones que no aportan nada, exactamente igual que en decimal, donde 007 sigue siendo siete. 00001011 y 1011 son el mismo número y esta página da las mismas dos salidas para los dos. Rellenar hasta una anchura fija es habitual cuando la anchura significa algo —un byte se escribe casi siempre con sus ocho dígitos—, así que aceptar la forma rellenada es una necesidad y no una comodidad.
- ¿Cuál es el número binario más largo que puedo convertir aquí?
- Cincuenta y tres dígitos, que en decimal son 9.007.199.254.740.991. El límite no lo elige esta página: es la anchura a la que un número de máquina deja de distinguir enteros vecinos, así que una entrada más larga no se podría leer con exactitud y la página tendría que imprimir algo que parece una respuesta y no lo es. Una entrada más larga se rechaza con un mensaje. Esto importa aquí más que en las páginas de aritmética, porque convertir suena a leer y leer suena a que no hay tope.
- ¿Es lo mismo que dividir entre dos repetidamente?
- Da la misma respuesta por un camino distinto. La división repetida entre dos produce los dígitos por la derecha, que es el método que se usa en el sentido contrario —de decimal a binario—. De binario a decimal, la suma de valores posicionales es más corta, porque los dígitos ya se conocen y solo hay que sumar sus pesos. Los dos son correctos; esta página imprime la suma porque es la que se puede comprobar de un vistazo.
- ¿Puedo convertir un número binario con parte fraccionaria?
- Aquí no. Esta página lee números enteros, así que un punto binario se rechaza en lugar de interpretarse. Las fracciones en binario están perfectamente definidas —las posiciones a la derecha del punto valen un medio, un cuarto, un octavo y así—, pero una página que las aceptara tendría que decidir cuántas mostrar y cómo redondear la última, y esta familia de páginas trabaja con números enteros de principio a fin. Mantener esa frontera en el mismo sitio en todas las páginas del grupo hace que una misma entrada nunca sea aceptada por una y rechazada por otra.
Referencias
- Binary number — positional notation, place values, and the conversion between base two and base ten — Wolfram MathWorld (United States)
- Number base — why a numeral's value depends on its position and on the base, and how one quantity is written in several bases — Wolfram MathWorld (United States)
- Powers of two — the sequence 1, 2, 4, 8, 16 … that a binary number's place values are taken from, catalogued as OEIS A000079 — OEIS Foundation Inc. (United States)