Sistemas numéricos (Binario, Decimal, hexadecimal)

Publicado el 22 marzo 2015 por Francves


El sistema numérico que utilizamos a diario es el sistema decimal, pero este sistema no es conveniente para las máquinas debido a que la información se maneja codificada en forma de bits prendidos o apagados; esta forma de codificación nos lleva a la necesidad de conocer el cálculo posicional que nos permita expresar un número en cualquier base que lo necesitemos.Es posible representar un número determinado en cualquier base mediante la siguiente formula:Donde n es la posición del dígito empezando de derecha a izquierda y numerando a partir de cero. D es el dígito sobre el cual operamos y B es la base numérica empleada.

Convertir números binarios a decimales


Trabajando en el lenguaje ensamblador nos encontramos con la necesidad de convertir números del sistema binario, que es el empleado por las computadoras, al sistema decimal utilizado por las personas.El sistema binario está basado en únicamente dos condiciones o estados, ya sea encendido (1) o apagado (0), por lo tanto su base es dos.Para la conversión podemos utilizar la formula de valor posicional:Por ejemplo, si tenemos el numero binario 10011, tomamos de derecha a izquierda cada dígito y lo multiplicamos por la base elevada a la nueva posición que ocupan:Binario: 1 1 0 0 1 Decimal:1*2^0+1*2^1+0*2^2+0*2^3+1*2^4 = 1 + 2 + 0 + 0 + 16 = 19 decimal.El caracter ^ es utilizado en computación como símbolo de potenciación y el caracter * se usa para representar la multiplicación.

Convertir números decimales a binarios


Te podría interesar: De sistema decimal a sistema binario en c++ y Java
Existen varios métodos de conversión de números decimales a binarios; aquí solo se analizará uno. Naturalmente es mucho mas fácil una conversión con una calculadora científica, pero no siempre se cuenta con ella, así que es conveniente conocer por lo menos una forma manual para hacerlo.El método que se explicará utiliza la división sucesiva entre dos, guardando el residuo como dígito binario y el resultado como la siguiente cantidad a dividir.Tomemos como ejemplo el número 43 decimal.43/2 = 21 y su residuo es 121/2 = 10 y su residuo es 110/2 = 5 y su residuo es 05/2 = 2 y su residuo es 12/2 = 1 y su residuo es 01/2 = 0 y su residuo es 1Armando el número de abajo hacia arriba tenemos que el resultado en binario es 101011
Te podría interesar: De decimal a Binario mediante recursividad en C++

Sistema hexadecimal


En la base hexadecimal tenemos 16 dígitos que van del 0 al 9 y de la letra A hasta la F (estas letras representan los números del 10 al 15). Por lo tanto, contamos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F.La conversión entre numeración binaria y hexadecimal es sencilla. Lo primero que se hace para una conversión de un número binario a hexadecimal es dividirlo en grupos de 4 bits, empezando de derecha a izquierda. En caso de que el último grupo (el que quede mas a la izquierda) sea menor de 4 bits se rellenan los faltantes con ceros.Tomando como ejemplo el número binario 101011 lo dividimos en grupos de 4 bits y nos queda:10; 1011Rellenando con ceros el último grupo (el de la izquierda):0010; 1011Después tomamos cada grupo como un número independiente y consideramos su valor en decimal:0010 = 2; 1011 = 11Pero como no podemos representar este número hexadecimal como 211 porque sería un error, tenemos que sustituir todos los valores mayores a 9 por su respectiva representación en hexadecimal, con lo que obtenemos:2BH (Donde la H representa la base hexadecimal)Para convertir un número de hexadecimal a binario solo es necesario invertir estos pasos: se toma el primer dígito hexadecimal y se convierte a binario, y luego el segundo, y así sucesivamente hasta completar el número.

Código ASCII


Te podría interesar: Tabla Ascii
ASCII generalmente se pronuncia "aski", es un acrónimo de American Standard Code for Information Interchange.Este código asigna a las letras del alfabeto, a los dígitos decimales del 0 al 9 y a varios símbolos adicionales un número binario de 7 bits (poniéndose el bit 8 en su estado de apagado o 0).De esta forma cada letra, dígito o caracter especial ocupa un byte en la memoria de la computadora.Podemos observar que este método de representación de datos es muy ineficiente en el aspecto numérico, ya que en formato binario nos basta un solo byte para representar numeros de 0 a 255, en cambio con el código ASCII un byte puede representar unicamente un dígito.Debido a esta ineficiencia, el código ASCII es principalmente utilizado en la memoria para representar texto.

Metodo BCD


BCD es un acrónimo de Binary Coded Decimal.En esta notación se utilizan grupos de 4 bits para representar cada dígito decimal del 0 al 9. Con este método podemos representar dos dígitos por byte de información.Aoen cuando este método es mucho mas práctico para representación de números en la memoria en comparación al ASCII, todavía se queda por debajo del binario, ya que con un byte en el método BCD solo podemos representar dígitos del 0 al 99, en cambio, en formato binario podemos representar todos los dígitos desde 0 hasta 255.Este formato es utilizado principalmente para representar números muy grandes en aplicaciones mercantiles ya que facilita las operaciones con los mismos evitando errores de redondeo.Representación de punto flotanteEsta representación esta basada en la notación científica, esto es, representar un número en dos partes: su mantisa y su exponente.Poniendo como ejemplo el número 1234000, podemos representarlo como 1.123*10^6, en esta última notación el exponente nos indica el número de espacios que hay que mover el espacio hacia la derecha para obtener el resultado original.En caso de que el exponente fuera negativo nos estaría indicando el número de espacios que hay que recorrer el punto decimal hacia la izquierda para obtener el original.
Fuente: Curso básico de ensamblador
También te podría interesar:
  1. Escribir en bloc de notas con c++ [Archivo/Ficheros c++]
  2. Matrices en Java
  3. Medir el tiempo de ejecución en Java
  4. Algoritmo - Factorial de un número en C++
  5. Exportando tablas en oracle usando exp