Calculadora binaria
Resultado
Binario
- Decimal
- 17
- Hexadecimal
- 11
- Resto
- 0
Esta calculadora binaria suma, resta, multiplica y divide números escritos en base dos, y devuelve el resultado en binario, en decimal y en hexadecimal a la vez. El sistema binario solo tiene dos dígitos, 0 y 1, y la aritmética es la misma de siempre: lo único que cambia es dónde se produce el acarreo. En decimal, 9 más 1 se lleva porque la base es diez; en binario, 1 más 1 se lleva porque la base es dos. Ese único hecho contiene toda la suma binaria, y de él salen la multiplicación, la división y la resta sin ninguna sorpresa. Las tres lecturas del resultado no son tres respuestas distintas: son la misma cantidad escrita de tres maneras, y cada una sirve para algo. El binario es lo que venías a buscar, y es la forma en la que están escritos un registro de hardware, una máscara de bits o las banderas de estado de un procesador. El decimal es lo que puedes comprobar de un vistazo, y por eso es el que delata un acarreo mal llevado. El hexadecimal son esos mismos bits agrupados de cuatro en cuatro, así que no aporta información nueva: aporta la forma en la que esos valores se documentan de verdad. La división es entera, de modo que el cociente va truncado y el resto ocupa una fila propia en lugar de desaparecer en un punto decimal.
Fórmula
1011 + 110 = 10001 (11 + 6 = 17)
- 1011
- El primer número, escrito en base dos. Leerlo como base dos es lo que lo convierte en once: esos mismos dígitos leídos como decimal serían mil once, que es justo el error que esta página existe para evitar
- + − × ÷
- La operación. Funciona dígito a dígito igual que en decimal, con el diez sustituido por el dos allí donde hay un acarreo o un préstamo
- 1 + 1 = 10
- El único hecho de la aritmética binaria que no resulta familiar. Dos unos dan un cero y un uno que se lleva a la posición siguiente, porque los dígitos se acaban después del uno. Tres unos dan 11: un uno en el resultado y otro que se lleva
- suma de dígito × 2ⁿ
- Cómo se obtiene la lectura decimal: cada dígito binario multiplicado por el valor de su posición y los resultados sumados. Así sale que 10001 son diecisiete, y es el único camino entre la respuesta binaria y la decimal
- resto
- Lo que sobra cuando una división no es exacta. Dividir 1011 entre 10 da 101 y sobra 1, porque once son cinco doses y uno más. El resto se muestra siempre, y vale cero en las tres operaciones que no pueden dejarlo
- 53 bits
- El ancho de entrada que acepta esta página: hasta 9.007.199.254.740.991, que en binario es un uno seguido de cincuenta y tres dígitos. A partir de ahí un número de máquina deja de distinguir sus vecinos y la aritmética dejaría de ser exacta sin avisar
Hace falta siempre que haya que operar con números binarios y el resultado tenga que quedar comprobable. El uso diario es leer un registro de hardware o una máscara de bits —qué banderas tiene activadas un byte de estado, qué pines están en alto— y verificar un valor que un compilador, un depurador o una herramienta de red han impreso en binario. Las máscaras de subred, los permisos de un archivo, la columna de banderas de un registro de estado y el estado de los pines de un microcontrolador son todos números binarios sobre los que alguien tiene que hacer cuentas, y la lectura hexadecimal que aparece junto al resultado es la forma en que esos valores se escriben cuando se documentan. El otro uso es aprender: la regla del acarreo es la que todo el mundo se salta una vez en el papel, y escribir 1011 más 110 y ver aparecer 10001 lo arregla antes que un ejemplo resuelto de un libro. Para pasar de binario a decimal sin operar nada, la lectura decimal del panel ya lo hace, pero el desarrollo término a término está en la página hermana enlazada abajo.
Ejemplos resueltos
Sumar 1011 y 110
- Alinea los dos números por la derecha: 1011 y 0110
- Columna de la derecha: 1 + 0 = 1
- Columna siguiente: 1 + 1 = 10, así que se escribe 0 y se lleva 1
- Columna siguiente: 0 + 1 + el 1 que se lleva = 10, así que se escribe 0 y se lleva 1
- Columna de la izquierda: 1 + el 1 que se lleva = 10, así que se escribe 0 y se lleva 1 a una posición nueva
- El resultado se lee 10001, que en decimal es 16 + 1 = 17
El ejemplo de apertura, y la manera más rápida de ver la regla del acarreo en funcionamiento: la suma es más larga que cualquiera de los dos sumandos porque el último acarreo necesitó una posición propia. La lectura decimal, 17, es la comprobación —once más seis son diecisiete— y el hexadecimal 11 son los mismos bits agrupados de cuatro en cuatro, que es la razón de que se parezca al once decimal. Esa coincidencia desaparece en cuanto los números crecen.
Dividir 1011 entre 10
- Esto es once dividido entre dos, así que la respuesta es cinco y sobra uno
- Cinco en binario es 101, y uno es 1
- La página informa del cociente 101 y del resto 1 en lugar de imprimir 101,1
El ejemplo que justifica que la fila del resto exista. Impreso solo como cociente, 101 diría que once dividido entre dos son cinco, y es la fila de abajo la que hace verdadera la frase. Hay una segunda razón para no echar mano de un punto decimal: en el momento en que un resultado tiene parte fraccionaria, la aritmética puede dejar de terminar —uno dividido entre tres en binario es una expansión infinita— y en esta página las entradas y las salidas son números enteros de principio a fin.
Restar 1011 a 110
- Esto es seis menos once, así que la respuesta es negativa
- La diferencia es cinco, y el signo se arrastra delante del resultado
- Cinco es 101, así que la respuesta es -101
Aquí no se usa el complemento a dos, que es el esquema con el que un procesador almacena los negativos. El signo menos se conserva delante del número, que es la forma que emplea quien escribe en papel y la que sigue siendo legible cuando el valor se imprime junto a sus lecturas decimal y hexadecimal. La representación que haría una máquina del mismo valor sería un patrón de bits de anchura fija, y esa anchura no es algo que esta página tenga.
Limitaciones
Esta página trabaja solo con números enteros. No hay punto binario ni binario fraccionario, así que no se acepta 1.01 —lo que también implica que una división que no sale exacta devuelve cociente y resto, con el cociente truncado hacia cero y no redondeado—. Las entradas están limitadas a 9.007.199.254.740.991, un uno seguido de cincuenta y tres dígitos binarios; el campo de entrada no admite separador de millares, así que ese tope se teclea sin puntos: 9007199254740991. Por encima de esa anchura la aritmética ya no puede garantizarse exacta, y una entrada mayor se rechaza en lugar de responderse de forma aproximada. Los resultados tienen el mismo techo, de modo que una multiplicación que lo desborde informa de un error en vez de dar un número equivocado. Los negativos se escriben con un signo menos delante y no en complemento a dos, y no se supone ninguna anchura de bits fija: 1011 son cuatro bits aquí, no los cuatro bits bajos de un registro. La división entre cero se rechaza.
Preguntas frecuentes
- ¿Por qué 1 + 1 da 10 y no 2?
- Porque en base dos no existe un dígito para el dos. Los dígitos son 0 y 1 y ahí se acaba la columna, exactamente igual que en decimal la columna de las unidades se acaba después del 9. Así que dos unos producen un cero en esa columna y un uno que se lleva a la siguiente, lo que se escribe 10 — y esa frase es la misma que el 9 + 1 = 10 decimal, con la base cambiada. Tres unos dan 11: un uno en el resultado y otro que se lleva.
- ¿Por qué aparece una fila de resto aunque sume o multiplique?
- Porque el panel de resultados es una lista fija y no una lista que crece y mengua según la operación que elijas, y una fila que apareciera y desapareciera se leería peor que una que está siempre en el mismo sitio. Restar, sumar y multiplicar no pueden dejar resto con números enteros, así que ahí pone 0: ese cero es la fila diciendo que la operación no dejó nada, no un fallo al calcularlo. La división es la única operación de esta página que puede dejarlo, y la fila es lo que impide que un cociente truncado parezca una respuesta exacta.
- ¿Cuál es el número más grande que puedo escribir?
- 9.007.199.254.740.991, que en binario son cincuenta y tres unos y en hexadecimal es 1FFFFFFFFFFFFF. El campo de entrada solo admite dígitos, sin separador de millares, así que ese número se teclea 9007199254740991. El límite es la anchura a la que una máquina deja de distinguir enteros vecinos, así que por encima la aritmética dejaría de ser exacta sin avisar —el resultado parecería un número y no lo sería—. Una entrada más ancha se rechaza con un mensaje en lugar de truncarse o redondearse, y un resultado que desborde ese mismo techo también.
- ¿Puedo restar y obtener un resultado negativo?
- Sí. Pon el número mayor en la segunda casilla y la respuesta vuelve con un signo menos delante, en las tres lecturas. Esto no es el complemento a dos, la representación que usa un procesador cuando guarda un número negativo en un ancho de bits fijo: es la forma de signo delante, que es la que escribirías en papel y la que sigue siendo legible junto a una lectura decimal y otra hexadecimal. No se supone ninguna anchura de bits, así que una respuesta negativa no se enrolla dentro de un patrón de unos.
- ¿Por qué la división no es exacta?
- Porque esta página trabaja con números enteros, de modo que una división que no sale exacta da el cociente truncado hacia cero más el resto. Once dividido entre dos es cinco y sobra uno, y la página informa de 101 y 1 en lugar de 101,1. Es una decisión y no un hueco: en el momento en que un resultado tiene parte fraccionaria la aritmética puede no terminar —uno dividido entre tres en binario es una expansión periódica— y una página que lo redondeara en silencio imprimiría un número que no es la respuesta.
- ¿Para qué sirve la lectura en hexadecimal?
- Es el mismo valor agrupado de cuatro bits en cuatro bits, que es como lee el binario quien escribe código máquina. Un byte son ocho bits y por tanto exactamente dos dígitos hexadecimales, así que FF, 2A y B2 son las formas que aparecen en documentación, depuradores y hojas de datos. Pasar de binario a decimal cuesta una suma, pero entre binario y hexadecimal no hay ningún cálculo: solo se reagrupa, y por eso la lectura sale gratis aquí.
Referencias
- Binary number — the base-two system, positional notation, the carry rule and the arithmetic operations — Wolfram MathWorld (United States)
- Number base — why a numeral's value depends on its position and on the base, and how the same quantity is written in different bases — Wolfram MathWorld (United States)
- Floating-point number — the machine representation whose 53-bit significand fixes this page's input ceiling — Wolfram MathWorld (United States)