Saltar a contenido

Sistema octal

El sistema octal

Cuando escribimos un programa, representar los datos en sistema decimal es lo que podríamos considerar como escritura natural, pero no nos da visión sobre los bits a almacenar en la memoria del ordenador.

Supongamos un programa que tiene la siguiente instrucción:

x = 123

Los programas son una secuencia de instrucciones a ejecutar. Aquí le estamos diciendo al ordenador que tenemos una variable “x” cuyo valor queremos que sea 123. Las variables son los datos que manejan los programas y se corresponden con los valores almacenados en la memoria RAM.

En algunos lenguajes de programación es posible escribir los literales directamente en binario. Por ejemplo, en lenguaje Java se indica anteponiendo un prefijo 0b:

x = 0b01111011

Véase que utilizamos el carácter = para asignar un valor a una variable. Los literales en binario nos dan mayor control de lo que se almacena en memoria, pero también pueden ser una fuente de errores, ya que con tantos ceros y unos es fácil equivocarse.

¿Que usar en la escritura de programas? ¿Literales en sistema decimal o binario? Sigamos con la sintaxis Java. Las dos siguientes instrucciones son equivalentes:

x = 255
x = 0b11111111

Cada opción tiene su ventaja. La segunda es más farragosa, pero a cambio nos da una idea muy clara de lo que se almacena en la memoria. Con los números decimales, estamos obligados a hacer conversiones de un sistema de numeración a otro.

En los inicios de la informática, los matemáticos descubrieron una tercera alternativa, el sistema de numeración octal. Las conversiones de octal a binario son fáciles de realizar.

En el sistema octal contamos de ocho en ocho. Por lo tanto, debemos limitarnos a ocho símbolos disponibles para representar números:

En decimal:  0 1 2 3 4 5 6 7 8 9
En octal:    0 1 2 3 4 5 6 7

Como sucede en el sistema decimal, para números más grandes, necesitamos combinar varios dígitos. Veamos la representación de los primeros números en decimal y su equivalente en octal:

Decimal Octal Decimal Octal
0 0 10 12
1 1 11 13
2 2 12 14
3 3 13 15
4 4 14 16
5 5 15 17
6 6 16 20
7 7 17 21
8 10 18 22
9 11 19 23

Véase que al llegar al nº 8 se nos acaban los dígitos octales, y tenemos que comenzar a combinar números, pasando al 10. Y así sucesivamente. Al 47 le sucederá el 50, y al 77, el 100.

La ventaja de utilizar el sistema octal en la escritura de programas es que basta con sustituir cada dígito octal por tres dígitos binarios de acuerdo a la siguiente tabla:

Binario Octal
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7

Por ejemplo:

en decimal :     51966
en binario :     1 100 101 011 111 110
en octal   :     145376

Por lo tanto, si en nuestro programa escribimos 145376 e indicamos de alguna forma que se trata de un número octal, será fácil convertir a binario sustituyendo cada dígito octal por sus tres dígitos binarios correspondientes. En lenguajes como C o Java, los literales octales llevan un dígito 0 como prefijo:

x = 0b1100101011111110    (en binario)
x = 0145376               (octal)
x = 51966                 (decimal)

De todas formas, el uso del sistema octal en los programas está algo pasado de moda. Se usa más el sistema hexadecimal.