Hoy vamos a ver algo que se sale un poco de la tónica habitual de este blog. Pero, siempre viene bien volver a las bases de la informática. Así que espero que esta pequeña introducción al sistema binario y a su aritmética, pueda serte útil.
Tabla de Contenidos
Sistemas de Numeración
Un sistema de numeración lo podemos definir como un conjunto de reglas y convenios que nos permiten la representación de todos los números mediante varias cifras o símbolos. Los múltiples sistemas de numeración que existen podemos agruparlos principalmente en dos familias:
Por un lado, están los que se rigen por reglas estrictas sin importar dónde esté la cifra o el símbolo. Estos son los sistemas basados en el Valor Absoluto. Un ejemplo de esto es el sistema de numeración romana, que utiliza las letras I, V, X, L, C, D y M. En este sistema, el valor de una letra siempre es el mismo, sin importar su posición dentro del número. Por ejemplo, el valor de C siempre será 100 independientemente de su posición:
Por otro lado tenemos a los sistemas basados en valores relativos. En este caso el mismo símbolo puede representar valores diferentes dependiendo de dónde esté ubicado en el número. El sistema decimal es el más destacado y conocido entre estos sistemas de numeración.
El sistema decimal fue ideado en la India en el siglo V a.C., posteriormente traído a Europa por los árabes en la Edad Media. Su base es el número diez, habiéndose elegido este número por ser diez los dedos de las manos y emplearse habitualmente éstos para contar. Este sistema consta de diez dígitos diferentes: 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9; con los que debidamente agrupados puede representarse cualquier número.
En el sistema decimal cada signo tiene un valor dependiendo del lugar que ocupa. Y este valor viene dado por su valor absoluto multiplicado por potencias de 10 sucesivas (10⁰, 10¹, 10², etc.). Así el número cuatro mil trescientos cincuenta y dos equivaldrá a:
La construcción de un sistema de numeración basado en valores relativos seguirá la definición siguiente:
El valor decimal de un número es igual a la suma de los valores de los dígitos o símbolos correspondientes, multiplicados por la base elevada a la potencia definida por su posición.
es decir, si:
N = valor decimal de un número
B = base del sistema numérico
S = símbolo de cada posición
T = total de cifras que tiene el número
será:
N = Sₜ × Bᵗ⁻¹ + Sₜ₋₁ × Bᵗ⁻² + ... + S₁ × B⁰
Por ejemplo, si partimos del número 561₈, de tres cifras (T = 3) y con base ocho (B = 8), tendríamos la siguiente conversión a decimal:
N = 5×8² + 6×8¹ + 1×8⁰ =
320 + 48 + 1 =
369
Con lo que tenemos que el valor decimal del número 561 en base 8 es 369; lo que podemos expresar como 591₈ = 369₁₀.
Equivalencias entre sistemas de valores relativos
En la tabla siguiente se pueden observar las equivalencias de distintos sistemas de numeración.
Decimal (10)
Quinario (5)
Octal (8)
Duodecimal (12)
Hexadecimal (16)
0
0
0
0
0
1
1
1
1
1
2
2
2
2
2
3
3
3
3
3
4
4
4
4
4
5
5
5
5
6
6
6
6
7
7
7
7
8
8
8
9
9
9
10
A
A
11
B
B
12
C
13
D
14
E
15
F
Sistema Binario (Base 2)
El sistema binario, es la piedra angular del mundo de la informática. Es más, sólo nos tenemos que detener en el significado de bit, para comprobar como es una abreviatura de "binary digit" o dígito binario.
Este sistema utiliza solamente dos símbolos diferentes: 0 y 1. En el mundo informático esto es justo lo que representa un bit de información, podemos hablar de verdadero y falso, encendido y apagado, etc.
Pero, ¿por qué es tan crucial el sistema binario en la programación? Básicamente por dos razones entre otras:
Eficiencia: Las computadoras digitales utilizan el sistema binario debido a su eficiencia. Es más fácil construir máquinas que solo necesitan distinguir entre dos estados.
Operaciones lógicas: Las operaciones fundamentales de la lógica booleana (AND, OR, NOT, etc.) se pueden representar y manipular fácilmente en el sistema binario.
Conversión de decimal a binario
Para convertir enteros decimales a la notación binaria, tan sólo hay que dividir el número decimal por 2 hasta que el cociente sea cero. Los restos de cada división formarán el número binario equivalente; el primer resto será la cifra que se encuentre más a la derecha mientras que el último resto será la cifra que se encuentre más a la izquierda.
Como ejemplo, vamos a convertir el número 13 a su valor binario:
Si ahora le damos la vuelta a los restos que hemos obtenido, nos queda que:
13₁₀ = 1101₂
Cuando el cociente sea 1, también puedes usar dicho cociente en lugar de tener que hacer una nueva división. Esto se ve mejor si expresamos la división con otro formato. Si paramos cuando el cociente sea 1, usando el ejemplo anterior tendríamos lo siguiente:
13 |_2_
(1) 6 |_2_
(0) 3 |_2_
(1) (1)
Conversión de binario a decimal
Al igual que con el resto de sistemas de numeración, cada símbolo tiene un valor en función del lugar que ocupa. Así, por ejemplo, el valor decimal del número 101011₂ es:
Otro método muy utilizado es el denominado duplicidad y suma. La manera de proceder en este método es la siguiente:
Se multiplica por 2 la cifra de orden superior, la que está más a la izquierda del número.
Al producto se le suma el valor de la cifra de la derecha.
La suma obtenida se multiplica por 2.
Al producto obtenido se le suma la cifra a la derecha.
Se repite la operación hasta que no nos queden cifras a la derecha.
Veamos la conversión por este sistema del mismo número del ejemplo del caso anterior, es decir con el número 101011₂:
Multiplicamos por 2 la cifra mayor: (1)01011 | 1₅ × 2 = 2
Le sumamos la cifra siguiente: 1(0)1011 | 2 + 0₄ = 2
Multiplicamos por 2 el nuevo resultado | 2 × 2 = 4
Le sumamos la cifra siguiente : 10(1)011 | 4 + 1₃ = 5
Multiplicamos por 2 el nuevo resultado | 5 × 2 = 10
Le sumamos la cifra siguiente: 101(0)11 | 10 + 0₂ = 10
Multiplicamos por 2 el nuevo resultado | 10 × 2 = 20
Le sumamos la cifra siguiente: 1010(1)1 | 20 + 1₁ = 21
Multiplicamos por 2 el nuevo resultado | 21 × 2 = 42
Le sumamos la cifra siguiente: 10101(1) | 42 + 1₀ = 43
Fracciones
Conversión de fracciones decimales en binarias
En general el proceso de conversión de un sistema a otro de la parte fraccionaria de un número es diferente al utilizado para la parte entera. Con frecuencia este proceso es el inverso para la fracción.
Para convertir una fracción decimal en binaria se multiplica la fracción binaria por 2, correspondiendo la parte entera del producto al primer dígito binario. Se repite la operación con la parte decimal del producto anterior obteniendo un nuevo entero que será el siguiente dígito binario. Así sucesivamente hasta que la fracción quede reducida a cero, o se haya quedado una cantidad suficiente de dígitos binarios, en el caso de una fracción periódica.
Ejemplo: convertir la fracción decimal 0,828125 en fracción binaria.
El método más cómodo de conversión, resulta del desarrollo del número binario en sus respectivas potencias de 2, con exponente negativo descendente de izquierda a derecha.
En esencia, la suma binaria es muy semejante a la suma decimal; la tabla de sumar binaria, es mucho más reducida que la decimal, como se puede observar a continuación.
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10
Al sumar 1 + 1 en sistema binario, se excede el límite de la cuenta, ya que sólo disponemos de los símbolos 0 y 1, y en consecuencia, el resultado será 0 con acarrreo de 1 a la posición inmediata superior.
Veamos a continuación dos ejemplos de suma binaria. El primero no necesita comentarios, basta con seguir la tabla de sumar binaria.
100100
+ 10010
-------
110110
El segundo tiene varios acarreos de 1. Así que para que se pueda entender un poco mejor, se ha indicado con super-índices encima de los valores afectados:
₁ ₁₁
11011
+ 10011
-------
101110
Resta binaria
Las reglas de la resta binaria aparecen esquematizadas a continuación:
0 - 0 = 0
1 - 1 = 0
1 - 0 = 1
0 - 1 = 1 => Se pasa una unidad al sustraendo
Cuando en una columna la cifra del minuendo es menor que la del sustraendo, es preciso pedir una unidad a la columna inmediata superior, con lo que se aumenta en dos unidades el valor del minuendo en la que estamos trabajando (o lo que es lo mismo sumamos 10₂) . Al restar en la columna superior hay que tener en cuenta la unidad del minuendo que se ha pasado a la columna inferior y descontarla de aquella. Pero mejor, veamos un ejemplo:
# Queremos restar 111 a 11101.
# La primera resta es sencilla, 1 - 1 = 0
1110(1)
- 0011(1)
---------
(0)
# Ahora al restar debemos llevar una decena al minuendo, quedando 10 - 1.
111(10)1
- 001(01)1
----------
(1)0
# Llevamos una unidad al sustraendo, al ser mayor que el minuendo, añadimos una decena, pasando de 1 - 10 a 11 - 10.
11(11)01
- 00(10)11
----------
(1)10
# En esta añadimos una unidad al sustraendo, quedando 1 - 1.
1(1)101
- 0(1)111
---------
(0)110
# Finalmente, aquí no hay acarreos, así que tenemos 1 - 0.
(1)1101
-(0)0111
--------
(1)0110
# Con esto tenemos que 11101 - 111 = 10110
Multiplicación binaria
Las reglas de multiplicar en binario serían las siguientes:
0 × 0 = 0
0 × 1 = 0
1 × 0 = 0
1 × 1 = 1
La multiplicación binaria sigue el mismo sistema que la decimal. Sólo debemos recordar que la suma final de los productor parciales obtenidos al multiplicar el multiplicando por cada una de las cifras del multiplicador, debe hacerse en binario, como es obvio. Como siempre, será mejor ver un ejemplo:
Como se puede observar, sólo hay dos casos, o repetir el multiplicando cuando el valor a usar del multiplicador es 1 o tener el valor 0, en caso de que ese sea el valor a usar del multiplicador.
División binaria
La división binaria debe hacerse de idéntica manera a como se hace la división decimal con la salvedad de que la diferencia entre la parte correspondiente del dividendo y el producto obtenido al multiplicar el divisor por la cifra correspondiente del cociente, debe hacerse e binario. Veamos un ejemplo:
Como se ha visto, en el caso anterior 100010₂ : 110₂ = 101₂ con resto 100₂. Podemos verificar si la operación ha sido correcta multiplicando divisor por cociente y sumando el resto:
Hoy vamos a ver algo que se sale un poco de la tónica habitual de este blog. Pero, siempre viene bien volver a las bases de la informática. Así que espero que esta pequeña introducción al sistema binario y a su aritmética, pueda serte útil.
Tabla de Contenidos
Sistemas de Numeración
Un sistema de numeración lo podemos definir como un conjunto de reglas y convenios que nos permiten la representación de todos los números mediante varias cifras o símbolos. Los múltiples sistemas de numeración que existen podemos agruparlos principalmente en dos familias:
Por un lado, están los que se rigen por reglas estrictas sin importar dónde esté la cifra o el símbolo. Estos son los sistemas basados en el Valor Absoluto. Un ejemplo de esto es el sistema de numeración romana, que utiliza las letras
I
,V
,X
,L
,C
,D
yM
. En este sistema, el valor de una letra siempre es el mismo, sin importar su posición dentro del número. Por ejemplo, el valor deC
siempre será100
independientemente de su posición:Por otro lado tenemos a los sistemas basados en valores relativos. En este caso el mismo símbolo puede representar valores diferentes dependiendo de dónde esté ubicado en el número. El sistema decimal es el más destacado y conocido entre estos sistemas de numeración.
El sistema decimal fue ideado en la India en el siglo V a.C., posteriormente traído a Europa por los árabes en la Edad Media. Su base es el número diez, habiéndose elegido este número por ser diez los dedos de las manos y emplearse habitualmente éstos para contar. Este sistema consta de diez dígitos diferentes:
0
,1
,2
,3
,4
,5
,6
,7
,8
y9
; con los que debidamente agrupados puede representarse cualquier número.En el sistema decimal cada signo tiene un valor dependiendo del lugar que ocupa. Y este valor viene dado por su valor absoluto multiplicado por potencias de 10 sucesivas (10⁰, 10¹, 10², etc.). Así el número cuatro mil trescientos cincuenta y dos equivaldrá a:
Sistemas de numeración con valores relativos
La construcción de un sistema de numeración basado en valores relativos seguirá la definición siguiente:
es decir, si:
será:
Por ejemplo, si partimos del número 561₈, de tres cifras (
T = 3
) y con base ocho (B = 8
), tendríamos la siguiente conversión a decimal:Con lo que tenemos que el valor decimal del número
561
en base 8 es369
; lo que podemos expresar como591₈ = 369₁₀
.Equivalencias entre sistemas de valores relativos
En la tabla siguiente se pueden observar las equivalencias de distintos sistemas de numeración.
Sistema Binario (Base 2)
El sistema binario, es la piedra angular del mundo de la informática. Es más, sólo nos tenemos que detener en el significado de bit, para comprobar como es una abreviatura de "binary digit" o dígito binario.
Este sistema utiliza solamente dos símbolos diferentes:
0
y1
. En el mundo informático esto es justo lo que representa un bit de información, podemos hablar deverdadero
yfalso
,encendido
yapagado
, etc.Pero, ¿por qué es tan crucial el sistema binario en la programación? Básicamente por dos razones entre otras:
AND
,OR
,NOT
, etc.) se pueden representar y manipular fácilmente en el sistema binario.Conversión de decimal a binario
Para convertir enteros decimales a la notación binaria, tan sólo hay que dividir el número decimal por 2 hasta que el cociente sea cero. Los restos de cada división formarán el número binario equivalente; el primer resto será la cifra que se encuentre más a la derecha mientras que el último resto será la cifra que se encuentre más a la izquierda.
Como ejemplo, vamos a convertir el número
13
a su valor binario:Si ahora le damos la vuelta a los restos que hemos obtenido, nos queda que:
Cuando el cociente sea 1, también puedes usar dicho cociente en lugar de tener que hacer una nueva división. Esto se ve mejor si expresamos la división con otro formato. Si paramos cuando el cociente sea
1
, usando el ejemplo anterior tendríamos lo siguiente:Conversión de binario a decimal
Al igual que con el resto de sistemas de numeración, cada símbolo tiene un valor en función del lugar que ocupa. Así, por ejemplo, el valor decimal del número 101011₂ es:
Otro método muy utilizado es el denominado duplicidad y suma. La manera de proceder en este método es la siguiente:
Veamos la conversión por este sistema del mismo número del ejemplo del caso anterior, es decir con el número 101011₂:
Fracciones
Conversión de fracciones decimales en binarias
En general el proceso de conversión de un sistema a otro de la parte fraccionaria de un número es diferente al utilizado para la parte entera. Con frecuencia este proceso es el inverso para la fracción.
Para convertir una fracción decimal en binaria se multiplica la fracción binaria por 2, correspondiendo la parte entera del producto al primer dígito binario. Se repite la operación con la parte decimal del producto anterior obteniendo un nuevo entero que será el siguiente dígito binario. Así sucesivamente hasta que la fracción quede reducida a cero, o se haya quedado una cantidad suficiente de dígitos binarios, en el caso de una fracción periódica.
Ejemplo: convertir la fracción decimal 0,828125 en fracción binaria.
Si tuviéramos un número con parte decimal y fraccionaria, podemos hacer las conversiones en dos partes:
Conversión de fracciones binarias a decimales
El método más cómodo de conversión, resulta del desarrollo del número binario en sus respectivas potencias de 2, con exponente negativo descendente de izquierda a derecha.
Suma binaria
En esencia, la suma binaria es muy semejante a la suma decimal; la tabla de sumar binaria, es mucho más reducida que la decimal, como se puede observar a continuación.
Al sumar 1 + 1 en sistema binario, se excede el límite de la cuenta, ya que sólo disponemos de los símbolos 0 y 1, y en consecuencia, el resultado será 0 con acarrreo de 1 a la posición inmediata superior.
Veamos a continuación dos ejemplos de suma binaria. El primero no necesita comentarios, basta con seguir la tabla de sumar binaria.
El segundo tiene varios acarreos de 1. Así que para que se pueda entender un poco mejor, se ha indicado con super-índices encima de los valores afectados:
Resta binaria
Las reglas de la resta binaria aparecen esquematizadas a continuación:
Cuando en una columna la cifra del minuendo es menor que la del sustraendo, es preciso pedir una unidad a la columna inmediata superior, con lo que se aumenta en dos unidades el valor del minuendo en la que estamos trabajando (o lo que es lo mismo sumamos
10₂
) . Al restar en la columna superior hay que tener en cuenta la unidad del minuendo que se ha pasado a la columna inferior y descontarla de aquella. Pero mejor, veamos un ejemplo:Multiplicación binaria
Las reglas de multiplicar en binario serían las siguientes:
La multiplicación binaria sigue el mismo sistema que la decimal. Sólo debemos recordar que la suma final de los productor parciales obtenidos al multiplicar el multiplicando por cada una de las cifras del multiplicador, debe hacerse en binario, como es obvio. Como siempre, será mejor ver un ejemplo:
Como se puede observar, sólo hay dos casos, o repetir el multiplicando cuando el valor a usar del multiplicador es 1 o tener el valor 0, en caso de que ese sea el valor a usar del multiplicador.
División binaria
La división binaria debe hacerse de idéntica manera a como se hace la división decimal con la salvedad de que la diferencia entre la parte correspondiente del dividendo y el producto obtenido al multiplicar el divisor por la cifra correspondiente del cociente, debe hacerse e binario. Veamos un ejemplo:
Como se ha visto, en el caso anterior 100010₂ : 110₂ = 101₂ con resto 100₂. Podemos verificar si la operación ha sido correcta multiplicando divisor por cociente y sumando el resto:
jose