Este anexo viene acompañado de una cápsula explicativa: Accede a la cápsula aquí!

Anexo: conversión entre sistemas numéricos

En arquitectura de computadores usamos distintas formas de escribir un mismo número. La base indica cuántos símbolos podemos usar para cada posición:

SistemaBaseDígitos disponiblesEjemplo del número cuarenta y cinco
Decimal100 a 9
Binario20 y 1
Hexadecimal160 a 9 y A a F

En hexadecimal, A, B, C, D, E y F representan, respectivamente, los valores decimales 10, 11, 12, 13, 14 y 15. Las letras minúsculas significan lo mismo.

Cómo reconocer la base

En las expresiones matemáticas, el subíndice indica la base: , y representan el mismo valor. En el ramo escribiremos los binarios sin un prefijo adicional y distinguiremos los hexadecimales con 0x: por ejemplo, y 0x2D. El prefijo 0x indica que el número está en base 16; esos caracteres no forman parte de su valor. Es común verlo en direcciones de memoria, registros y volcados de memoria. También se puede escribir cuando se indica la base con un subíndice.

El sistema binario sirve para expresar los bits que almacena y procesa el computador. El hexadecimal permite escribir valores binarios largos de manera más compacta; por eso aparece con frecuencia en direcciones, instrucciones y datos de bajo nivel. El decimal es el sistema que usamos habitualmente para contar y comunicar cantidades.

La idea común: valor posicional

Se cuentan las posiciones desde la derecha, comenzando en cero. Cada dígito aporta su valor multiplicado por la base elevada a la posición:

Aquí es la base y es el valor del dígito en la posición . En binario usamos potencias de 2; en hexadecimal, potencias de 16. Por ejemplo, en decimal .

De binario a decimal

Ejemplo: convertir a decimal.

  1. Numera las posiciones desde la derecha: .
  2. Multiplica cada bit por la potencia de 2 de su posición.
  3. Suma los productos.
Posición 543210
Bit 101101
Aporte 3208401

Un 0 no aporta valor, pero conserva su posición. Omitirlo cambiaría el número.

De decimal a binario

Ejemplo: convertir a binario. Buscamos qué potencias de 2 suman 45. Una potencia presente recibe el bit 1; una ausente recibe el bit 0.

  1. La mayor potencia que cabe en 45 es . Restamos: . Escribimos 1 en la posición 5.
  2. no cabe en 13. Escribimos 0 en la posición 4.
  3. cabe: . Escribimos 1 en la posición 3.
  4. cabe: . Escribimos 1 en la posición 2.
  5. no cabe en 1. Escribimos 0 en la posición 1.
  6. cabe: . Escribimos 1 en la posición 0.

Leemos los bits desde la potencia mayor hasta la menor: . Podemos comprobarlo con la suma de la sección anterior: .

De hexadecimal a decimal

Ejemplo: convertir a decimal. Primero reemplazamos las letras por sus valores: A vale 10 y F vale 15. Luego multiplicamos cada dígito por su potencia de 16.

Posición 210
Dígito2AF
Valor 21015
Aporte 51216015

El prefijo hexadecimal no modifica el cálculo: 0x2AF es otra forma de escribir .

De decimal a hexadecimal

Ejemplo: convertir a hexadecimal. Buscamos cuántas veces cabe cada potencia de 16, de mayor a menor. En cada posición el coeficiente debe estar entre 0 y 15.

  1. cabe 2 veces: . Restan .
  2. cabe 10 veces en 175: . Restan . El dígito de valor 10 se escribe A.
  3. cabe 15 veces: . No queda resto. El dígito de valor 15 se escribe F.

Por lo tanto, , que escribiremos 0x2AF usando la convención del ramo. La comprobación consiste en desarrollar sus posiciones: .

Para recordar el procedimiento

Hacia decimal: multiplica cada dígito por la base elevada a su posición y suma. Desde decimal: encuentra los coeficientes de esas mismas potencias, de la mayor a la menor. La base es 2 para binario y 16 para hexadecimal.