Capítulo 1: El sistema informático. Software y hardware

Sistemas de numeración y codificación de la información

Como hemos dicho más arriba, los sistemas informáticos utilizan internamente el sistema de numeración binario, que está basado únicamente en dos dígitos (0 y 1). También hemos comentado que las personas utilizamos el sistema de numeración decimal que, como su nombre indica, se basa en el uso de diez dígitos (del 0 al 9)

En definitiva, un sistema de numeración es un conjunto de reglas y símbolos que nos permiten representar valores numéricos.

Esto significa que un determinado valor se representará de forma diferente según el sistema de numeración que estemos empleando. O al contrario, la misma representación puede equivaler a diferentes valores cuando usamos sistemas de numeración distintos.

Veamos un ejemplo:

Representaciuón numérica

Cuando mezclamos valores representados en diferentes sistemas de numeración, podemos indicar el sistema al que pertenece cada número añadiendo a su derecha un subíndice con el número de símbolos que utiliza dicho sistema. Por ejemplo:

Representación de la base de un número

Tanto el sistema de numeración decimal como el binario (y el resto de los que usaremos en este capítulo) son posicionales. Esto significa que cada dígito representa un determinado valor que depende del propio dígito y de la posición que éste ocupa en el número. Para explicar esta idea, tomemos este número: 327(10

El dígito 7 representa 7 unidades porque se encuentra en la primera posición de la derecha. Sin embargo, el dígito 2 representa 2 decenas, es decir, 20 unidades, porque lo encontramos en la segunda posición, comenzando por la derecha. Del mismo modo, el dígito 3 representa 3 centenas (300 unidades), porque aparece en la tercera posición, comenzando por la derecha.

También existen sistemas de numeración antiguos que no eran posicionales, como el romano o el egipcio.

Todos los sistemas de numeración posicionales se rigen por el Teorema fundamental de la numeración que establece que el valor de un número viene dado por la suma de cada uno de sus dígitos multiplicados por su base elevada a la posición que ocupa dicho dígito, teniendo en cuenta que las unidades ocupan la posición 0.

Teorema fundamental de la numeración

Siguiendo esta idea, podríamos representar el número anterior, usando su expresión posicional, de la siguiente forma:

Ejemplo TFN

Convertir valores binarios a decimal

En Informática el Teorema fundamental de la numeración tiene aprovechamiento inmediato, ya que nos permite convertir un número representado en binario a decimal de una forma muy sencilla.

El truco está en escribir en decimal la expresión posicional del número en binario. De esta forma, al resolverla, obtendremos el resultado en decimal.

Veamos un ejemplo:

Ejemplo binario a decimal

Binario a decimal con decimales

En realidad, no hay diferencia en convertir un número de binario a decimal con parte decimal o sin ella. Para lograrlo, basta con aplicar el Teorema fundamental de la numeración del modo que hemos visto más arriba.

Lo comprobaremos suponiendo que el número anterior hubiese tenido parte decimal. Por ejemplo: 11011100,01101(2

Para convertirlo a decimal, realizaríamos las siguientes operaciones:

Ejemplo binario a decimal con decimales

Convertir valores decimales a binarios

Cuando necesitemos realizar la conversión en sentido contrario, podemos aplicar el método de las divisiones sucesivas.

Básicamente, este método consiste en realizar una división entera (es decir, sin obtener decimales) del número en decimal entre dos (la base a la que vamos a convertir). Una vez concluida la división, tomamos el cociente y volvemos a dividirlo entre dos. Así continuamos hasta que obtengamos un cociente igual a cero. En este punto, tomamos los restos de todas las divisiones en orden inverso a como han ido apareciendo (es decir, el último resto será el primero).

Como ejemplo, veamos la misma conversión del punto anterior, pero en el sentido contrario:

Convertir decimal a binario

Decimal a binario con decimales

A veces, el número en base 10 que deseamos convertir a binario tiene una parte decimal.

En estos casos, convertiremos la parte entera siguiendo la explicación anterior y, a continuación, realizaremos la conversión de la parte decimal según las siguientes pautas:

  1. Multiplicamos la parte decimal por 2
  2. Separamos la parte entera del resultado
  3. Con la parte decimal resultante volvemos al primer paso.
  4. Repetimos el proceso hasta que no nos quede parte decimal.

Al final, la parte decimal estará formada por los números enteros que hemos ido obteniendo en cada operación, colocados en el mismo orden que han aparecido.

Para entenderlo, pongamos como ejemplo el caso anterior: Convertir a binario en número decimal 220,40625(10.

Comenzaríamos obteniendo la parte entera y, como hemos visto más arriba, el resultado sería:

220(10 = 11011100(2.

A continuación, nos centramos en la parte decimal (0,40625) y aplicamos el proceso anterior:

Ejemplo binario a decimal con decimales

Por lo tanto, la parte decimal sería 0,01101(2.

Y sumando la parte entera con la parte decimal: 11011100,01101(2

Los sistemas de numeración octal y hexadecimal

Una de las dificultades que plantea el trabajo con números binarios es la cantidad de dígitos que empleamos para representar cantidades relativamente pequeñas (en el ejemplo anterior hemos necesitado 8 dígitos binarios para representar el mismo valor que en decimal representamos con tres).

Por este motivo, en lugar de trabajar directamente en binario, es frecuente utilizar otros sistema de numeración que utilicen un mayor número de símbolos.

Podríamos pensar que el sistema de numeración perfecto para este trabajo es el decimal, porque es al que estamos más acostumbrados. Sin embargo, los sistemas de numeración cuya base es una potencia de 2 tienen una ventaja añadida: la conversión entre ellos es automática.

Este es el motivo por el que suelen utilizarse los sistemas de numeración octal y hexadecimal.

El sistema de numeración octal

Como indica su nombre, el sistema de numeración octal utiliza ocho dígitos (0 a 7) para representar valores.

Como ya hemos dicho más arriba, la ventaja que representa octal sobre decimal es que utiliza una base que es potencia de 2 (23 = 8). En resumidas cuentas, esta característica nos va a permitir que cada tres caracteres en binario se puedan representar, directamente, con un carácter en octal.

Para comprenderlo, observemos la siguiente tabla que nos muestra valores en octal y en binario:

Octal

De esta forma, para convertir un número escrito en binario al sistema octal, bastaría con tomar los bits agrupados de tres en tres, comenzando por la derecha y completando con los ceros necesarios a la izquierda:

hacer grupos de tres dígitos

A continuación, buscamos cada grupo de tres dígitos en la tabla anterior y los sustituimos por su dígito correspondiente en la tabla:

sustituir valores

Por lo tanto, el número en binario 11011100(2 corresponde con el número 334(8 en octal.

Resulta evidente que el paso de octal a binario es igual de sencillo.

Convertir valores de octal a decimal

La forma más sencilla de convertir un valor en octal a decimal es aplicar el Teorema fundamental de la numeración como ya hemos hecho con el binario. Como la expresión posicional del número enoctal la escribimos en decimal, al resolverla, obtendremos el resultado en decimal.

Veamos un ejemplo:

Octal a decimal

Convertir valores de decimal a octal

Para realizar la conversión de un valor decimal a octal, podemos aplicar el método de las divisiones sucesivas que ya usamos con el sistema binario. Es decir, realizaremos la división entera (sin obtener decimales) del número en decimal entre ocho (la base a la que vamos a convertir). Una vez concluida la división, tomamos el cociente y volvemos a dividirlo entre ocho. Este proceso continuará hasta que obtengamos un cociente igual a cero.

En este punto, tomamos los restos de todas las divisiones en orden inverso a como han ido apareciendo (es decir, el último resto será el primero).

Como ejemplo, veamos la misma conversión del punto anterior, pero en el sentido contrario:

decimal a octal

El sistema de numeración hexadecimal

El sistema de numeración hexadecimal utiliza dieciséis dígitos para representar valores. Como nosotros sólo utilizamos los dígitos del 0 al 9, y no son suficientes, en este caso se añaden las letras A a F para representar los dígitos que nos faltan. Por lo tanto, los dígitos que utilizamos para representar valores en hexadecimal son:

dígitos hexadecimales

Ya hemos comentado más arriba que, como pasaba con el sistema octal, la ventaja que representahexadecimal sobre decimal es que utiliza una base que es potencia de 2 (24 = 16). De forma similar a lo que ocurría en octal, esta característica nos va a permitir que cada cuatro caracteres en binariose puedan representar, directamente, con un carácter en hexadecimal.

Para comprobarlo, vamos a partir de la tabla que nos muestra valores en hexadecimal y en binario:

Tabla hexadecimal-binario

De esta forma, para convertir un número escrito en binario al sistema hexadecimal, bastaría con tomar los bits agrupados de cuatro en cuatro, comenzando por la derecha y completando con los ceros que sean necesarios a la izquierda:

agrupar de cuatro en cuatro

A continuación, buscamos cada grupo de cuatro dígitos en la tabla anterior y los sustituimos por su dígito correspondiente en la tabla:

Buscar valores en la tabla

Por lo tanto, el número en binario 11011100(2 corresponde con el número DC(16 en hexadecimal.

Como puedes suponer, el paso de hexadecimal a binario es igual de sencillo.

Convertir valores de hexadecimal a decimal

Como en el caso del binario y el octal, la forma más sencilla de convertir un valor en hexadecimal adecimal es aplicar el Teorema fundamental de la numeración. Como antes, la expresión posicional del número en hexadecimal la escribimos en decimal. De este modo, al resolverla, obtendremos el resultado en decimal.

Para entender el siguiente ejemplo, debemos tener en cuenta el valor, en decimal, de los últimos 6 dígitos hexadecimales:

hexadecimal-decimal

Veamos el ejemplo:

Conversión hexadecimal-decimal

Convertir valores de decimal a hexadecimal

Para realizar la conversión de un valor decimal a hexadecimal, aplicaremos de nuevo el método de las divisiones sucesivas que hemos utilizado con anterioridad. Es decir, realizaremos la división entera (sin obtener decimales) del número en decimal entre dieciséis (la base a la que vamos a convertir). Una vez concluida la división, tomamos el cociente y volvemos a dividirlo entre dieciséis. Este proceso continuará hasta que obtengamos un cociente igual a cero.

Llegado este momento, tomamos los restos de todas las divisiones en orden inverso a como han ido apareciendo (es decir, el último resto será el primero), acordándonos de sustituir aquellos valores que sean mayores que 9 por su dígito correspondiente en hexadecimal.

Como ejemplo, veamos la misma conversión del punto anterior, pero en el sentido contrario:

conversión decimal-hexadecimal