Introducción
En informática tendremos que enfrentarnos con varios problemas que requieren de soluciones distintas haciendo uso de la capacidad resolutiva para según que problemas con los que nos podamos encontrar en el ámbito de sistemas, haciendo uso de algoritmos para sacarnos de apuros en desarrollo Web, e incluso, haciendo un proceso de descartes en base a pruebas de rendimiento.
Aquí todo es posible, sin embargo, también debemos aprender las unidades básicas con la que las máquinas trabajan para enviar información a bajo nivel, obtener un color para nuestros desarrollos Web…etc Todo esto lo aprenderemos aquí.
Binario
Los números binarios son aquellos que están comprendidos entre 0 y 1 utilizando como base el 2. Esto representa la condición eléctrica, es decir, 0 es apagado y 1 es encendido.
Binario => Decimal BIN->DEC
Para convertir de binario a decimal tenemos dos formas de hacerlo.
- Mediante el uso de una tabla exponencial
- Tabla de exponentes
Mediante posición
Para convertir mediante posición, lo único que deberemos hacer, es saber en qué posición tenemos cada número y utilizar las potencias.
110101(2) => Decimal
((1*2⁵)+(1*2⁴)+(0*2³)+(1*2²)+(0*2¹)+(1*2⁰)) =
((1*2⁵)+(1*2⁴)+(1*2²)+(1*2⁰)) = 53(10)
53(10) es nuestro número decimal.
Tabla de exponentes
Dibujamos una tabla en relación al número que creemos que podamos obtener.
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
---|---|---|---|---|---|---|---|
2⁷ | 2⁶ | 2⁵ | 2⁴ | 2³ | 2² | 2¹ | 2⁰ |
Y en base al número que nos den, comenzamos a comparar de menor a mayor. Por ejemplo:
Nº | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
---|---|---|---|---|---|---|---|---|
105 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 |
Binario => Hexadecimal
Tenemos que tener en cuenta la siguiente equivalencia:
Hexadecimal | Binario |
---|---|
0 | 0000 |
1 | 0001 |
2 | 0010 |
3 | 0011 |
4 | 0100 |
5 | 0101 |
6 | 0110 |
7 | 0111 |
8 | 1000 |
9 | 1001 |
A | 1010 |
B | 1011 |
C | 1100 |
D | 1101 |
E | 1110 |
F | 1111 |
Para convertir tan solo necesitaremos traducir cifra por cifra en base a esta tabla. Por ejemplo: 1010111101100100
1010 = A
1111 = F
0110 = 6
0100 = 4
Nuestro número es: AF64
Binario -> Octal
Tenemos que tener presente la siguiente equivalencia:
Decimal | Binario |
---|---|
0 | 000 |
1 | 001 |
2 | 010 |
3 | 011 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
El octal solo hace uso de 3 bits, y no de 4 como el decimal o hexadecimal. Tomaremos los 3 primeros bits y los separamos para hacer la conversión.
1 010 010 111(2) = x(8)
1 010 111 => Vemos como el 1 está solo, por ello, le añadimos 2 ceros para normalizarlo.
001 010 111.
Nuestro número es: 127(8)
Decimal
Son números comprendidos entre 0 y 9, hacen uso de base 10. Estos se suelen utilizar mucho para representar la numeración IPv4, obtener un color para aplicarlo en desarrollo Web mediante la función rgb/rgba()
…etc
Decimal => Binario DEC->BIN
Para convertir de binario a decimal tenemos dos formas de hacerlo.
- Mediante división
- Tabla exponencial
División
Para convertir de decimal a binario, simplemente tenemos que tener en cuenta el resto de la división, ignorar los decimales y continuar dividiendo el número del cociente hasta que ya no pueda dividirse más. Para reconstruir el número, se seleccionan de derecha a izquierda.
Por ejemplo:
362|2 = 0
181|2 = 1
90|2 = 0
45|2 = 1
22|2 = 0
11|2 = 1
5|2 = 1
2|2 = 0
0|2 = 1
101101010
Tabla de exponentes
Dibujamos una tabla en relación al número que creemos que podamos obtener.
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
---|---|---|---|---|---|---|---|
2⁷ | 2⁶ | 2⁵ | 2⁴ | 2³ | 2² | 2¹ | 2⁰ |
Y en base al número que nos den, comenzamos a comparar de menor a mayor. Por ejemplo:
Nº | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
---|---|---|---|---|---|---|---|---|
105 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 |
Decimal -> Hexadecimal
Dividimos el número entre 16 utilizamos el cociente para seguir dividiendo sin utilizar los decimales resultantes. Posteriormente, para obtener el resto, se multiplica el decimal obtenido de la división por 16 que es la base para obtener el resto.
Por ejemplo: 2937(10) -> x(16)
2937|16 = 183.5625 -> Resto = 0.5625*16 = 9
183|16 = 11.4375 -> Re = 0.4375*16 = 7
11|16 = 0.6875 -> Re = 0.6875*16 = B
Con lo que nuestro nº es: B79(16)
Decimal -> Octal
Se divide el número decimal entre 8, se desestiman los decimales, y el último número que ya no puede ser divisible se queda tal cual como resto formando parte del nº. Se lee de derecha hacia la izquierda.
210(10) = x(8)
210|8 = Resto =2
26|8 = Re = 2
3|8 = Re =3
Nuestro número es: 322.
Hexadecimal
Estos números son muy utilizados sobre todo cuando queremos manipular cierta información de archivos, contemplan un rango entre 0 y F, siendo F el número 15, hace uso de base 16.
Hexadecimal => Decimal
Para convertir de hexadecimal a decimal
Utilizamos las posiciones de los números y los multiplicamos por el resultado de su base.
B79(16) = x(12)
B*16² + 7*16¹ + 9*16⁰ =
11*256 + 7*16 + 9*1 =
2816+112+9 = 2937(10)
Hexadecimal => Binario
Tenemos que tener en cuenta la siguiente equivalencia:
Hexadecimal | Binario |
---|---|
0 | 0000 |
1 | 0001 |
2 | 0010 |
3 | 0011 |
4 | 0100 |
5 | 0101 |
6 | 0110 |
7 | 0111 |
8 | 1000 |
9 | 1001 |
A | 1010 |
B | 1011 |
C | 1100 |
D | 1101 |
E | 1110 |
F | 1111 |
Para convertir tan solo necesitaremos traducir cifra por cifra en base a esta tabla. Por ejemplo: A7F0
A = 1010
7 = 0111
F = 1111
0 = 0000
Nuestro número es: 1010011111110000
Hexadecimal -> Octal
Realizar este proceso de conversión no es un método directo. Primero hay que traducir de HEX->BIN y luego de BIN->OCT para obtener el valor.
E67(16) = x(8)
E(16) = 1110(2)
6(16) = 0110(2)
7(16) = 0111(2)
Nº convertido= 111001100111
Una vez obtenido el binario, lo pasamos a octal.
111001100111(2) = x(8)
111 001 100 111 = 7147(8)
Nuestro número es 7147(8)
Octal
Útil pero menos visto, nos permite obtener un número comprendido entre 0-7, hace uso de base 8.
Octal -> Decimal
Se tiene en cuenta la posición de la cifra, ya que luego se multiplica por su base, y a su vez, la base se multiplica por sí misma tantas veces tenga n en el exponente.
7147(8) = x(10)
7*8³ + 1*8² + 4*8¹ + 7*8⁰ = 3584 + 64 + 32 + 7
Nuestro número es: 3,687
Octal -> Binario
Básicamente utilizamos 3 bits por dígito, hay que tener en cuenta la siguiente equivalencia:
Tenemos que tener presente la siguiente equivalencia:
Decimal | Binario |
---|---|
0 | 000 |
1 | 001 |
2 | 010 |
3 | 011 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
7420(8) -> x(2)
7 = 111
4 = 100
2 = 010
0 = 000
Nuestro número es: 111100010000(2)
Octal -> Hexadecimal
Como hemos dicho anteriormente, es un proceso que no se hace directo y hay que hacer uso del paso anterior para obtener el número hexadecimal.
7456(8) -> x(2)
7 = 111
4 = 100
5 = 101
6 = 110
Nº binario: 111100101110
Para obtener el número hexadecimal, bastará con separar 4 bits los dígitos del nº binario.
1111 0010 1110(2) -> x(16)
1111 = F
0010 = 2
1110 = E
Nuestro número es: F2E
Finalizando
¡Espero que aprendáis mucho! Al principio puede costar, pero con la práctica terminas haciendo las operaciones casi al instante.
¡Un saludo!