El ABC de los 1’s y 0’s
Prepárate para cambiar tu percepción de la realidad. Todo lo que creías saber sobre algo tan simple como los números va a cambiar. Toda tu vida pensaste que tener 100 cosas significaba tener esta cantidad:

Cuando, en realidad, sólo significaba tener esta cantidad:

Estás entrado en la zona binaria y acabas de encontrarte con los sistemas de numeración con distintas bases.
Sistemas numéricos y bases
Los sistemas numéricos son los métodos que utilizamos para representar números. Desde la escuela, todos hemos estado operando dentro de los cómodos confines de un sistema numérico de base-10, pero hay muchos otros. Base-2, base-8, base-16, base-20, base… ya lo entiendes. Hay una variedad infinita de sistemas numéricos de base, pero sólo unos pocos son especialmente importantes para la ingeniería eléctrica.
Los sistemas numéricos más populares tienen incluso su propio nombre. La base 10, por ejemplo, se conoce comúnmente como el sistema numérico decimal. La base-2, de la que vamos a hablar hoy, también recibe el nombre de binario. Otro sistema numérico popular, el de base-16, se denomina hexadecimal.
La base de un número suele representarse con un número entero con subíndice al final del valor. Así, en la introducción anterior, la primera imagen sería en realidad 10010 algo, mientras que la segunda sería 1002 algo. Esta es una forma práctica de especificar la base de un número cuando hay alguna posibilidad de ambigüedad.
¿Por qué binario?
Bueno, ¿por qué el decimal? Hemos estado usando el decimal desde siempre y hemos dado por sentado la razón por la que nos decidimos por el sistema numérico de base 10 para nuestras necesidades numéricas cotidianas. Tal vez sea porque tenemos 10 dedos, o porque los romanos lo impusieron a sus antiguos subyugados. Independientemente de lo que nos haya llevado a ello, los trucos que hemos aprendido en el camino han consolidado el lugar de la base 10 en nuestro corazón; todo el mundo puede contar de 10 en 10. Incluso redondeamos los números grandes al múltiplo de 10 más cercano. Estamos obsesionados con el 10.
Pero los ordenadores y la electrónica no tienen dedos. En el nivel más bajo, realmente sólo tienen dos formas de representar el estado de cualquier cosa: ON o OFF, alto o bajo, 1 o 0. Y así, casi toda la electrónica se basa en un sistema numérico de base 2 para almacenar, manipular y calcular números.
La gran dependencia de la electrónica de los números binarios significa que es importante saber cómo funciona el sistema numérico de base 2. Es común encontrar el binario, o sus primos, como el hexadecimal, en todos los programas de ordenador. El análisis de los circuitos lógicos digitales y otra electrónica de muy bajo nivel también requiere un uso intensivo del binario.
En este tutorial, verás que todo lo que puedes hacer con un número decimal también se puede hacer con un número binario. Algunas operaciones pueden ser incluso más fáciles de hacer en un número binario (aunque otras pueden ser más dolorosas). Cubriremos todo eso y más.
Contar y convertir
La base de cada sistema numérico se llama también radix. El radix de un número decimal es diez, y el radix del binario es dos. El radix determina cuántos símbolos diferentes se necesitan para completar un sistema numérico. En nuestro sistema numérico decimal tenemos 10 representaciones numéricas para valores entre nada y diez: 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9. Cada uno de estos símbolos representa un valor muy específico y estandarizado.
En binario sólo se permiten dos símbolos: 0 y 1. Pero usando esos dos símbolos podemos crear cualquier número que un sistema decimal pueda.
Contar en binario
Puedes contar en decimal sin parar, incluso mientras duermes, pero ¿cómo contarías en binario? El cero y el uno en base dos deberían resultar bastante familiares: 0 y 1. A partir de ahí, las cosas se vuelven decididamente binarias.
Recuerda que sólo tenemos esos dos dígitos, así que, como hacemos en decimal, cuando nos quedamos sin símbolos tenemos que desplazar una columna a la izquierda, añadir un 1 y girar todos los dígitos a la derecha hasta el 0. Así que después del 1 tenemos el 10, luego el 11 y después el 100. Empecemos a contar…

Conversión de binario a decimal
Hay más de una manera de convertir binario a decimal. A continuación, describiremos dos métodos, el más “matemático” y otro más visual. Cubriremos ambos, pero si el primero utiliza demasiada terminología fea, pasa al segundo.
MÉTODO 1
Existe una función que podemos utilizar para convertir cualquier número binario a decimal:

hay cuatro elementos importantes en esa ecuación:
- an, an-1, a1, etc., son los dígitos de un número. Son los 0 y 1 con los que estás familiarizado, pero en binario sólo pueden ser 0 o 1.
- También es importante observar la posición de un dígito. La posición comienza en el 0, en el dígito más a la derecha; este 1 o 0 es el menos significativo. Cada dígito que se desplaza hacia la izquierda aumenta su significado, y también aumenta la posición en 1.
- La longitud de un número binario viene dada por el valor de n, en realidad es n+1. Por ejemplo, un número binario como 101 tiene una longitud de 3, algo mayor, como 10011110 tiene una longitud de 8.
- Cada dígito se multiplica por un peso: el 2n, 2n-1, 21, etc. El peso más a la derecha -20– equivale a 1, si se mueve un dígito hacia la izquierda el peso se convierte en 2, luego 4, 8, 16, 32, 64, 128, 256,… y así sucesivamente. Las potencias de dos son de gran importancia para el binario, rápidamente se vuelven muy familiares.
Deshagámonos de esos n y exponentes, y realicemos nuestra ecuación de notación posicional binaria en ocho posiciones:

Llevando esto más allá, introduzcamos algunos valores para los dígitos. ¿Qué pasa si tienes un número binario como 10011011? Eso significaría un valor de:

Para este tutorial, supongamos que el valor más a la derecha es siempre el menos significativo. El dígito menos significativo de un número es el que tiene la menor influencia en el valor final de un número. El significado de los dígitos es arbitrario – parte de una convención llamada endianidad. Un número binario puede ser big-endian, donde el dígito más significativo es el más a la izquierda, o little-endian, que es lo que usaremos en este tutorial (y normalmente verás los números binarios escritos de esta manera).
Ahora, introduce esos dígitos en nuestra ecuación de binario a decimal. Como nuestro número es little-endian, el valor menos significativo debe multiplicarse por el peso más pequeño.
1 * 27 + 0 * 26 + 0 * 25 + 1 * 24 + 1 * 23 + 0 * 22 + 1 * 21 + 1 * 20
Y podemos simplificarlo para encontrar nuestro número decimal:
= 1 * 128 + 0 * 64 + 0 * 32 + 1 * 16 + 1 * 8 + 0 * 4 + 1 * 2 + 1 * 1 = 128 + 16 + 8 + 2 + 1 = 155
Te darás cuenta rápidamente de que se necesitan muchos más dígitos para representar un número en binario que en decimal, ¡pero todo se hace con sólo dos dígitos!
MÉTODO 2
Otra forma más visual de convertir los números binarios a decimales es empezar clasificando cada 1 y cada 0 en una casilla. Cada papelera tiene una potencia sucesiva de dos pesos, los 1, 2, 4, 8, 16,… a los que estamos acostumbrados. Llevarlo a cabo ocho lugares se vería algo así:
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Así, si ordenamos nuestro número binario 10011011 en esas franjas, se vería así:
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 |
Para cada recipiente que tenga un valor binario 0, táchelo y elimínalo.
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 |
Y luego suma los pesos restantes para obtener tu número.

Convertir de decimal a binario
Al igual que pasar de binario a decimal, hay más de una forma de convertir decimal a binario. La primera utiliza la división y los restos, y la segunda la resta. Prueba las dos, o quédate con la que te resulte más cómoda.
MÉTODO 1
No es tan sencillo convertir un número decimal a binario. Esta conversión requiere dividir repetidamente el número decimal entre 2, hasta que lo hayas reducido a cero. Cada vez que divides el resto de la división se convierte en un dígito en el número binario que estás creando.
¿No recuerdas cómo se hacen los restos? Si ha pasado tiempo, recuerda que, como estamos dividiendo por dos, si el dividendo es par, el resto será 0; un dividendo impar significa un resto de 1.
Por ejemplo, para convertir 155 a binario harías este proceso:
155 ÷ 2 = 77 R 1 (That’s the right-most digit, 1st position) 77 ÷ 2 = 38 R 1 (2nd position) 38 ÷ 2 = 19 R 0 (3rd position) 19 ÷ 2 = 9 R 1 9 ÷ 2 = 4 R 1 4 ÷ 2 = 2 R 0 2 ÷ 2 = 1 R 0 1 ÷ 2 = 0 R 1 (8th position)
El primer resto es el dígito menos significativo (el más a la derecha), así que lee de arriba a abajo para completar nuestro número binario de derecha a izquierda: 10011011.
MÉTODO 2
Si dividir y encontrar restos no es lo tuyo, puede haber un método más fácil para convertir decimales a binarios. Empieza por encontrar la mayor potencia de dos que aún sea menor que tu número decimal, y réstala del decimal. Luego, sigue restando por la mayor potencia de dos posible hasta llegar a cero. Cada posición de peso que se restó, obtiene un dígito binario 1; los dígitos que no se restaron obtienen un 0.
Siguiendo con nuestro ejemplo, 155 puede ser restado por 128, produciendo 27:
155 – 128 = 27 | |||||||
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 |
Nuestro nuevo número, 27, no puede ser restado ni por 64 ni por 32. Ambas posiciones obtienen un 0. Podemos restar por 16, produciendo 11.
27 – 16 = 11 | |||||||
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 0 | 0 | 1 |
Y el 8 se resta del 11, produciendo el 3. Después de eso, no hay tanta suerte con el 4.
11 – 8 = 3 | |||||||
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 0 | 0 | 1 | 1 | 0 |
Nuestro 3 puede ser restado por 2, produciendo 1. Y finalmente, el 1 se resta por 1 para hacer 0.
3 – 2 = 1 | |||||||
1 – 1 = 0 | |||||||
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 |
¡Tenemos un número binario!

Bits, nibbles y bytes
Al hablar de la composición de un número binario, hemos tratado brevemente la longitud del número. La longitud de un número binario es la cantidad de 1’s y 0’s que tiene.
Longitudes comunes de los números binarios
Los valores binarios suelen agruparse en una longitud común de 1’s y 0’s, esta cantidad de dígitos se llama la longitud de un número. Las longitudes comunes de los números binarios incluyen los bits, los nibbles y los bytes. Cada 1 o 0 en un número binario se denomina bit. A partir de ahí, un grupo de 4 bits se llama nibble, y 8 bits forman un byte.
Los bytes son una palabra de moda cuando se trabaja en binario. Todos los procesadores están construidos para trabajar con una longitud determinada de bits, que suele ser un múltiplo de un byte: 8, 16, 32, 64, etc.
En resumen:
Largo | Nombre | Ejemplo |
1 | Bit | 0 |
4 | Nibble | 1011 |
8 | Byte | 10110101 |
Word es otra palabra de moda que aparece de vez en cuando. La longitud de una palabra (word) suele depender de la arquitectura de un procesador. Puede ser de 16 bits, 32, 64 o incluso más.
Relleno con ceros a la izquierda
Es posible que veas valores binarios representados en bytes (o más), aunque para que un número tenga 8 bits de longitud habría que añadir ceros a la izquierda. Los ceros a la izquierda son uno o más 0 que se añaden a la izquierda del bit más significativo de un número. Normalmente no se ven ceros a la izquierda en un número decimal: 007 no dice nada más sobre el valor de un número 7 (puede decir algo más).
Los ceros a la izquierda no son necesarios en los valores binarios, pero ayudan a presentar información sobre la longitud de los bits de un número. Por ejemplo, puedes ver el número 1 impreso como 00000001, para indicarte que estamos trabajando en el ámbito de un byte. Ambos números representan el mismo valor, sin embargo, el número con siete 0 delante añade información sobre la longitud de bits de un valor.
Operadores binarios (bitwise)
Hay varias formas de manipular los valores binarios. Al igual que con los números decimales, puedes realizar operaciones matemáticas estándar – suma, resta, multiplicación, división – con valores binarios. También puedes manipular bits individuales de un valor binario utilizando operadores a nivel de bit.
Los operadores binarios realizan funciones bit a bit sobre uno o dos números binarios. Hacen uso de la lógica booleana operando sobre un grupo de símbolos binarios. Estos operadores a nivel de bit son muy utilizados tanto en electrónica como en programación.
Complemento (NOT)
El complemento de un valor binario es como encontrar el opuesto exacto de todo lo que tiene. La función de complemento mira un número y convierte cada 1 en un 0 y cada 0 en un 1. El operador de complemento también se llama NOT.
Por ejemplo, para encontrar el complemento de 10110101:
NOT 10110101 (decimal 181) -------- = 01001010 (decimal 74)
NOT es el único operador a nivel de bits que sólo opera sobre un único valor binario.
OR
OR toma dos números y produce la unión de los mismos. Este es el proceso para unir dos números binarios: alinea cada número de manera que los bits coincidan, luego compare cada uno de sus bits que comparten una posición. Para cada comparación de bits, si uno o ambos bits son 1, el valor del resultado en esa posición de bit es 1. Si ambos valores tienen un 0 en esa posición, el resultado también obtiene un 0 en esa posición.
Las cuatro combinaciones posibles de OR, y su resultado son:
- 0 OR 0 = 0
- 0 OR 1 = 1
- 1 OR 0 = 1
- 1 OR 1 = 1
Por ejemplo, para encontrar el 10011010 O 01000110, alinee cada uno de los números bit a bit. Si alguno de los números, o ambos, tiene un 1 en una columna, el valor resultante también tiene un 1 allí:
10011010 OR 01000110 -------- = 11011110
Piensa en la operación OR como una suma binaria, sin un arrastre. 0 más 0 es 0, pero 1 más cualquier cosa será 1.
AND
La operación AND toma dos números y produce la conjunción de los mismos. AND sólo producirá un 1 si los dos valores sobre los que opera son también 1.
El proceso de unir dos valores binarios con AND es similar al de OR. Alinee cada número para que los bits coincidan, luego compare cada uno de sus bits que comparten una posición. Para cada comparación de bits, si uno o ambos bits son 0, el valor del resultado en esa posición de bit es 0. Si ambos valores tienen un 1 en esa posición, el resultado también obtiene un 1 en esa posición.
Las cuatro combinaciones posibles de AND, y su resultado son:
- 0 AND 0 = 0
- 0 AND 1 = 0
- 1 AND 0 = 0
- 1 AND 1 = 1
Por ejemplo, para encontrar el valor de 10011010 Y 01000110, empieza por alinear cada valor. El resultado de cada posición de bit sólo será 1 si los dos bits de esa columna son también 1.
10011010 AND 01000110 -------- = 00000010
Piensa en AND como una especie de multiplicación. Siempre que se multiplique por 0 el resultado también será 0.
XOR
XOR es el OR exclusivo. XOR se comporta como el OR normal, excepto que sólo producirá un 1 si uno de los dos números tiene un 1 en esa posición de bit.
Las cuatro combinaciones posibles de XOR, y su resultado son:
- 0 XOR 0 = 0
- 0 XOR 1 = 1
- 1 XOR 0 = 1
- 1 XOR 1 = 0
Por ejemplo, para encontrar el resultado de 10011010 XOR 01000110:
10011010 XOR 01000110 -------- = 11011100
Fíjate en el segundo bit, un 0 resultante de dos 1 unidos por XOR.
Desplazamiento de bits
Los desplazamientos de bits no son necesariamente un operador a nivel de bits como los mencionados anteriormente, pero son una herramienta útil para manipular un único valor binario.
Hay dos componentes en un desplazamiento de bits: la dirección y la cantidad de bits a desplazar. Puedes desplazar un número a la izquierda o a la derecha, y puedes desplazar un bit o varios.
Cuando se desplaza a la derecha, uno o más de los bits menos significativos (en el lado derecho del número) se cortan y se desplazan a la nada infinita. Se pueden añadir ceros a la izquierda para mantener la misma longitud de bits.
Por ejemplo, desplazando 10011010 a la derecha dos bits:
RIGHT-SHIFT-2 10011010 (decimal 154) -------- = 00100110 (decimal 38)
El desplazamiento hacia la izquierda empuja todos los bits hacia el lado más significativo (el lado izquierdo) del número. Por cada desplazamiento, se añade un cero en la posición del bit menos significativo.
Por ejemplo, desplazando 10011010 a la izquierda un bit:
LEFT-SHIFT-1 10011010 (decimal 154) -------- = 100110100 (decimal 308)
Ese simple desplazamiento de bits realiza en realidad una función matemática relativamente complicada. Un desplazamiento a la izquierda de n bits multiplica un número por 2n (¿ves cómo el último ejemplo multiplicó la entrada por dos?), mientras que un desplazamiento de n bits a la derecha hará una división entera por 2n. Desplazar a la derecha para dividir puede ser extraño – cualquier fracción producida por la división de desplazamiento será cortada, por lo que 154 desplazado a la derecha dos veces es igual a 38 en lugar de 154/4=38,5. Los desplazamientos de bits pueden ser una forma muy rápida de dividir o multiplicar por 2, 4, 8, etc.
El binario en la programación
En su nivel más bajo, el binario es lo que mueve toda la electrónica. Como tal, es inevitable encontrarse con el binario en la programación informática.
Representación de valores binarios en un programa
En Arduino, y en la mayoría de los otros lenguajes de programación, un número binario puede ser representado por un 0b que precede al número binario. Sin ese 0b el número será simplemente un número decimal.
Por ejemplo, estos dos números en código producirían dos valores muy diferentes:
a = 0b01101010; // Decimal 106
c = 01101010; // Decimal 1,101,010 - no 0b prefix means decimal
Operadores bit a bit en programación
Cada uno de los operadores bitwise comentados hace unas páginas puede realizarse en un lenguaje de programación.
Operador AND
Para sumar dos valores binarios diferentes, utiliza el operador ampersand, &. Por ejemplo:
x = 0b10011010 & 0b01000110; // x would equal 0b00000010
La operación AND de un valor binario es útil si se necesita aplicar una máscara de bits a un valor, o comprobar si un bit específico de un número binario es 1.
El operador AND a nivel de bits no debe confundirse con la operación condicional AND, que utiliza el doble amplificador (&&) y produce un verdadero o un falso basado en la entrada de múltiples sentencias lógicas.
Operador OR
El operador OR a nivel de bits es la tubería | (shift+\, la tecla que está debajo de retroceso). Por ejemplo:
y = 0b10011010 | 0b01000110; // y would equal 0b11011110
El operador OR de un valor binario es útil si quieres que uno o más bits de un número sean 1.
Al igual que con AND, asegúrate de no cambiar el operador bitácora OR con el operador condicional OR – el doble tubo (||).
Operador NOT
El operador NOT a nivel de bits es la tilde ~ (shift+`, la tecla que está encima del tabulador). A modo de ejemplo:
z = ~(0b10100110); // z would equal 0b01011001
Operador XOR
Para XOR dos valores utiliza el signo de intercalación (^) entre ellos:
r = 0b10011010 ^ 0b01000110; // r would equal 0b11011100
XOR es útil para comprobar si los bits son diferentes, porque sólo dará como resultado un 1 si opera sobre un 0 o un 1.
Desplazamiento de bits
Para desplazar un número binario a la izquierda o a la derecha de n bits, utiliza los operadores <<n o >>n. Un par de ejemplos:
i = 0b10100101 << 4; // Shift i left 4 bits
// i would equal 0b101001010000
j = 0b10010010 >> 2; // Shift j right 2 bits
// j would equal 0b00100100
Los desplazamientos son una forma especialmente eficaz de multiplicar o dividir por potencias de dos. En el ejemplo anterior, el desplazamiento de cuatro unidades a la izquierda multiplica ese valor por 24 (16). El segundo ejemplo, desplazando dos bits a la derecha, dividiría ese número por 22 (4)
¿Dónde continuar?
Binario es el bloque de construcción de todos los cálculos y operaciones en electrónica. Así que hay muchos lugares a donde ir desde aquí.
¿Estás interesado en aprender más sobre binario y otros sistemas numéricos importantes? Hexadecimal: aprenda sobre este sistema numérico de base 16 y cómo se relaciona con binario y decimal.
Ahora que puedes convertir entre decimal y binario, puedes aplicar ese conocimiento para comprender cómo se codifican los caracteres universalmente: ASCII
O puedes aplicar tu nuevo y brillante conocimiento a circuitos integrados y circuitos integrados de bajo nivel:
También puede ver cómo el binario juega un papel importante en estos protocolos de comunicación:
Comunicación serial
Interfaz Periférica Serial (SPI)
Comunicación I2C
Binary. Sparkfun Education. https://sparkfuneducation.com/concept-library/binary.html