Ir al contenido principal

Sistema Hexadecimal - Sistema de numeración posicional

Sistema Hexadecimal

El sistema hexadecimal es un sistema numérico que tiene como base el numero 16, y es una variante de los numero binarios

El sistema hexadecimal es utilizado por nuestros ordenadores con el fin de abreviar valores de datos e instrucciones de memoria.

Imagen relacionada


Esta es una imagen que muestra el contenido de un archivo con exención 'dll' en un editor de texto, como el editor de texto no reconoce este tipo de archivo, nos lo muestra de esta manera:


Como se puede apreciar, en vez de ver una gran cantidad de 0 y 1, vemos que hay grupos de 4 dígitos, y si observamos, vemos que son grupos de dígitos hexadecimales. El archivo cuentan con más de 48 mil lineas, por ello no se me es posible mostrarlo todo. Este es uno de los usos del sistema hexadecimal para abreviar grandes cantidades de 0 y 1. Ustedes mismos pueden hacer la prueba con una imagen o con cualquier otro tipo de texto.

El sistema hexadecima, esta conformado por solo 16 dígitos. A continuación te los presento:





Representación de la base 16.

Como mencione anteriormente, la base del sistema hexadecimal es 16, por ello cuenta con solo 16 caracteres (10 números y 6 letras). Como se puede apreciar en la tabla de arriba, el sistema hexadecimal cuenta con 10 numero que van del 0 - 9 y con 6 letras, las cuales son las primeras 6 letras de abecedario (A, B, C, D, E, F). En la tabla pueden observar que A es equivalente a 10, que B es equivalente a 11 y así sucesivamente. Creo que me explique bien ¿No?.

El sistema hexodeccimal es utilizado por microordenadores porque  es un método adecuado para acortar largas series de unos y ceros (numero binarios). Cada grupo de bits se puede convertir en un valor hexadecimal (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F), como se muestra en la siguiente tabla.

Imagen relacionada
Esta tabla se parece a la primera, simplemente que en esta se puede apreciar los equivalente de binario a decimal y a hexadecimal.

Pasar de binario a hexadecimal es algo muy simple. Empezando por el bit de la derecha, dividimos el número binario en grupos de cuatro. Si no tenemos un múltiplo entero de cuatro (4, 8, 12, etc.), quedan algunos bits vacíos a la izquierda; en este caso, se debe rellenar a ceros sin más. Después, convertimos cada grupo de cuatro bits en un dígito hexadecimal. El resultado es la representación hexadecimal del valor binario, que es la cuarta parte de largo en caracteres.

Para entender mejor el procedimiento, realicemos un ejemplo:

Supongamos que tenemos el siguiente numero binario de 16 bits:

1101001111000101

Como nos indica el procedimiento, debemos dividir esta secuencia en grupos de cuatro bits. Nos debería quedar algo así:

1101 - 0011 - 1100 - 0101

Ahora, pasamos cada grupo a un dígito hexadecimal. Nos podemos guiar por la tabla que les presente anteriormente la cual nos dice que "1101" en hexadecimal es equivalente a "13", "0011" en hexadecimal es equivalente a "3", "1100" en hexadecimal es equivalente a "12" y que "0101" en hexadecimal es equivalente a "A". Nos debería quedar algo así:

1101 - 0011 - 1100 - 0101 = 13 3 12 A

De esta manera, abreviamos la secuencia de 16 bits:

1101001111000101

A:

1331A

Para pasar de hexadecimal a binario, debemos invertir el procedimiento. Tomamos cada dígito hexadecimal y lo convertimos en un grupo de cuatro bits. Realicemos otros ejemplo.

Tenemos la siguiente secuencia hexadecimal:

5F7A

Lo que hacemos, es traducir dígito por dígito. 5 en binario es "0101", F (15) en binario es "1111", 7 en binario es "0111" y A (10) en binario es "1010". Nos debería quedar algo así:

5F7A =  0101111101111010

Y de esta manera, obtenemos como resultado una secuencia de 16 bits.


Python nos proporciona métodos y bibliotecas nativas que nos permiten trabajar con distintos sistemas numéricos (hexadecimal, octal, entre otros). En este blog ya hemos tratado con bibliotecas para el manejo de sistemas numéricos (http://www.pythondiario.com/2017/12/codificacion-de-datos-con-base64.html).

Python también nos proporciona el método "int" (usado para la conversión de datos) al cual le podemos pasar 2 argumentos: 1- La secuencia. 2- Base del sistema numerico.

A continuación les mostrare un ejemplo usando el método "int". Lo usare para pasar "A5F2" a su forma decimal.

int('A5F2', 16) # 16 es base usada por el sistema hexadecimal
Out[1]:
42482

int('5F7A', 16)
Out[2]:
24442

int('13312A', 16)
Out[3]:
1257770

Esos fueron unos ejemplos sencillo para decodificar cadenas hexadecimales a su forma decimal. 

Con el modelo base64, podemos codificar y decodificar datos a distintos tipos de sistemas numéricos. A continuación te mostrare un ejemplo, el cual codifica una cadena de texto ('Dato').

import base64 # Importamos la libreria base64

hexadecimal = base64.b16encode(b'Dato') # Codificamos la cadena 'Dato'
print(hexadecimal) # Mostramos el resultado
b'4461746F'

Como pueden observar, el resultado es una secuencia de dígitos en hexadecimal. Si se fijan, la cadena de texto ('Dato') la hemos pasado a binario, de esta manera se podrá codificar como el procedimiento que hemos visto anteriormente. El resultado es la forma hexadecimal de 'Dato'.

Muy bien, pero ahora, quiero pasar de decimal a hexadecimal. Para ello, podemos escribir nuestro propio programa que sea capaz de lograr este objetivo. A continuación te mostrare un pequeño scripts que toma los decimales que se les de como entrada y los transforma a hexadecimal. A continuación te mostrare el código:

def DecimalAHexodecimal(): # Esta sera nuestra función principal
    decimal = int(input("Introduzca un numero positivo para convertirlo a hexodecimal: ")) # Pedimos los decimales al usuario
    hexadecimal = "" # En esta variable almacenaremos el valor hexodecimal
    while decimal != 0: 
        # Cambiamos los digitos por los hexodecimales
        rem = CambiarDigitos(decimal % 16)
        # Llenamos la varibale "hexodecimal" con los nuevos valores
        hexadecimal = str(rem) + hexadecimal
        decimal = int(decimal / 16)
    print("Resultado: " + hexadecimal) # Mostramos el resultado

def CambiarDigitos(digitos): # Esta funcion traduce los digitos a sus respectivos hexodecimales
    decimales =     [10 , 11 , 12 , 13 , 14 , 15 ]
    hexadecimal = ["A", "B", "C", "D", "E", "F"]
    for c in range(7):
        if digitos == decimales[c - 1]:
            digitos = hexadecimal[c - 1]
    return digitos

DecimalAHexodecimal()
Introduzca un numero positivo para convertirlo a hexodecimal: 95
Resultado: 5F

Al ejecutar el programa, nos pedirá el numero decimal que queremos pasar a hexadecimal. En mi caso introduje el numero 95, el cual me da como resultado '5F'. De esta manera sabemos que '5F' es 95.

Descarga el código de muestra Ingresando Aquí 


Bueno, eso es todo por hoy. Esto es información, que cualquiera en el mundo de la informática debería de conocer.

Comparte tu experiencia con nosotros dejando un buen comentario.

Comentarios

Entradas más populares de este blog

Descargar vídeos y audios de YouTube con Python y Pafy

Introducción: YouTube es una plataforma que nos permite disfrutar de vídeos informativos, películas, música y mucho, mucho más. Siempre que escuchamos una canción queremos descargarla, si vemos un vídeo también queremos descargarlo, de esta manera podríamos verlos desde donde queramos sin necesidad de una conexión a Internet. Hoy te enseñare a descargar vídeos y audios de el sitio web conocido como YoutTube, esto lo lograremos haciendo uso de una librería llamada Pafy, si aun no tienes la librería Pafy, puedes descargarla ingresando al siguiente enlace:  Librería Pafy . Usando Pafy: Pafy una biblioteca de Python para descargar contenido de YouTube y recuperar metadatos. Antes de descargar contenido, usaremos a Pafy para obtener información de un vídeo especifico. A continuación te mostrare un ejemplo para obtener el titulo de un vídeo. import pafy url_video = " https://www.youtube.com/watch?v=JkK8g6FMEXE " video = pafy.new(url_video) pr

Calculando el factorial de un número (ejemplo de función recursiva).

Hola, mi nombre es Antonio Alfonso Martínez y en el presente artículo me dispongo a explicar un sencillo método para calcular el factorial de un número haciendo uso del concepto de recursividad. Para empezar, diremos que el factorial de un número natural "n" es el resultado del producto de todos los números desde 1 hasta dicho número "n". Así, para efectuar el calculo del factorial de un número, vamos a emplear una sencilla función a la que daremos el nombre de "factorial". De modo, que, partiendo del hecho de que el factorial de 1 y 0 es 1, construiremos nuestra función (a la que daremos el nombre de "factorial") para realizar el calculo del factorial de 5: Lo que hace esta función, es tomar como argumento un número "n". de modo que si este es 0 o 1 ("if n==0 or n==1:") la función devolverá directamente como resultado el número 1 ("resultado=1"). Sin embargo si dicho número "n" es mayor que

Cálculo de sumatorios entre dos números, con python (ejercício básico).

En programación, los ciclos, constituyen una herramienta de gran utilidad, en aquellos casos en los que nos vemos necesitados de efectuar una determinada operación, repetidas veces. En el presente artículo me propongo exponer, la realización de un sencillo programa para calcular el sumatorio entre dos números cualquiera, escogidos por el usuario, haciendo uso, precisamente de un ciclo “for”. De ese modo, para empezar, lo primero que haremos, será pedir a nuestro usuario que introduzca los dos números que delimitan el rango numérico sobre el que vamos a calcular dicho sumatorio. De este modo hemos comenzado creando una variable (“n1”) la cual será igual al dato numérico, en formato entero (“int”) introducido por el usuario (en este ejemplo el primer número era el 0), mediante un “input”, tal y como se aprecia en la imagen. Una vez establecido el primer número que delimita nuestro rango, habremos de hacer lo mismo con el segundo número para delimitarlo,