Números Naturales

Ir a Representación de Datos

Si deseas revisar información relacionada a la representación de datos en el computador, haz click en el siguente botón.

Probablemente hayas escuchado que toda la información en los computadores se representa mediante bits. A través de secuencias de unos y ceros se puede describir cualquier tipo de dato entendible por las computadoras como: números, textos, imágenes, sonido, video, entre otros. ¿Te has preguntado cómo es que con tan solo dos símbolos se pueda representar tal diversidad de datos? En este artículo descubriremos cómo hace el computador para manejar uno de los tipos de datos más básico en la computación, los números naturales o como son conocidos en el mundo de la computación, los números enteros sin signo.

Al finalizar te invitamos a visites los siguientes artículos relacionados.

Tanto el sistema binario como el sistema decimal son sistemas de numeración posicional, esto quiere decir que el valor de las cifras que componen los números que se generan con estos sistemas, cambia dependiendo de la posición que ocupa dentro del número.

Por ejemplo, el número 936 en base 10 es igual a 900 + 30 + 6. Esto significa que el valor de la cifra 9 de la tercera posición equivale a 9 \times 10^2, el valor de la cifra 3 de la segunda posición equivale a 3 \times 10^1 y el valor de la cifra 6 de la primera posición equivale a 6 \times 10^0. Como pueden notar, el valor de cada cifra está en función de la posición en donde se encuentra y de la base en la cual está representado el número, en este caso 10.

En realidad, para transformar un número representado en cualquier base a la base 10, basta sumar el valor de cada una de sus cifras. El valor de cada cifra se consigue multiplicando la cifra por la base elevada a la posición en donde se encuentra, comenzando a numerar la primera posición, la que está más a la derecha, con cero.

Como el computador usa el sistema binario, vamos a usar esta regla de transformación para calcular el valor en decimal de los números representados en base 2. Este va a ser es igual a la suma de las potencias de 2 en las posiciones en donde se encuentre un 1.

Así, por ejemplo, el número 1110101000 será igual a 2^9+2^8+2^7+2^5+2^3=936.

¿Cómo convertir un número a base 2?

Ya sabemos transformar un número de base 2 a base 10, pero ¿cómo transformamos un número de base 10 a base 2? La respuesta se encuentra en las matemáticas!!! Supongamos que tenemos un número cualquiera en una base b, supongamos que este número es a_3a_2a_1a_0. Dicho número será equivalente al siguiente número en base 10:

 a_3 \times 10^3+ a_2 \times 10^2 +a_1 \times 10^1 +a_0 \times 10^0

Vamos a hacer una pequeña transformación a la suma presentada. Vamos a representar el número usando una sumatoria. En la sumatoria nd corresponde al número de dígitos del número en la base b. La expresión quedaría como sigue:

(a_3a_2a_1a_0)_b=n_{10}=\displaystyle\sum_{i=0}^{nd} a_i \times b^i

Note que ambas representaciones son equivalentes. El número ahora está expresado como la sumatoria del producto cada dígito y la base elevada a la posición del dígito. Ahora, vamos a hacer otra transformación, vamos a extraer el primer término de la sumatoria. La expresión quedaría como sigue:

(a_3a_2a_1a_0)_b=n_{10}=a_0 + \displaystyle\sum_{i=1}^{nd} a_i \times b^i

Nuevamente note que ambas representaciones son equivalentes. Ahora el primer dígito, el a_0, se encuentra fuera de la sumatoria. Hacemos esto pues el objetivo es obtener cada uno de los dígitos en la base b. Ahora, otra pequeña transformación matemática, vamos a sacar la base para fuera de la sumatoria. Nuevamente note que esta representación es equivalente a las anteriores.

(a_3a_2a_1a_0)_b=n_{10}=a_0 + b \times (\displaystyle\sum_{i=1}^{nd} a_i \times b^{i-1})

Y como el orden de los sumandos no altera la suma, podemos expresar la sumatoria de la siguiente manera:

(a_3a_2a_1a_0)_b=n_{10}= b \times (\displaystyle\sum_{i=1}^{nd} a_i \times b^{i-1})+a_0

Pero, ¿por qué hacemos todas estas transformación? Las hacemos  para poder identificar un patrón conocido por todos nosotros: el dividendo es igual al divisor por el cociente más el resto!!!! Tal como esta expresado el número n_{10}, se puede identificar claramente el dividendo (el número n_{10}), divisor (la base), cociente (la sumatoria) y resto (el dígito a_0).

Si analizamos bien la última expresión, nos daremos cuenta que la cifra a_0 corresponde con el resto o módulo de la división del número en base 10 entre b. De esta manera obtenemos la primera cifra del número en base transformada.

Listo, ya hemos obtenido la primera cifra en otra base, ¿cómo hacemos para obtener las otras cifras? El cociente de la división entera es una nueva sumatoria, a la cual le podemos aplicar nuevamente las transformaciones realizadas para obtener la siguiente cifra. Y podemos repetir el procedimiento hasta obtener todas las cifras en la base deseada. Esto se cumple cuando el cociente es igual a cero. A este método se le conoce como el método de divisiones sucesivas y en general sirve para transformar de base 10 a otras bases, no solamente a la base 2.

En la imagen de abajo se puede ver como se ha aplicado el método de divisiones sucesivas para transformar el número 155 a base 2

ejemplo del método de divisiones sucesivas
Transformación de un número a binario por el método de divisiones sucesivas
Si te interesa investigar más sobre el sistema binario, te recomendamos el libro Understanding Binary Numbers: Concepts in Computer Systems  de Eric Sakk, en donde hace una explicación detallada del sistema binario para interesados en ciencias de la computación, ingeniería de computadoras y tecnologías de información.

Representación en el computador de los números naturales

Los números enteros pueden ser definidos como el conjunto formado por los números naturales, el cero y los números negativos. Los números naturales son el subconjunto de los números enteros que no poseen números negativos por lo que no tenemos que preocuparnos por representar el signo.  Cuando se representan los números naturales en el computador, se incluye también la representación del número cero. 

Para representar números naturales en binario, basta transformar el número de base 10 a base 2 usando la técnica de divisiones sucesivas presentada anteriormente. El número correspondiente en base 10 es básicamente la suma de las potencias de 2 en donde el bit se encuentra prendido, es decir, donde tiene el valor de 1

Por ejemplo en número 20 en base 10 tiene como representación binaria a la secuencia de bits 00 01 01 00, para obtener al número en base 10, se suman las potencias de dos en donde existe un bit prendido, en este caso las potencias 4 y 2, por lo que el número que se representa es 16+4 que suma 20.

Es importante mencionar que el rango de valores de números naturales que se puede representar depende directamente de la cantidad de bits que se disponen. En general con n bits se pueden representar 2^n posibles números por lo que el mayor valor del rango será el número 2^n-1. Se le resta uno pues en esta representación se incluye el cero como se había mencionado anteriormente.

ejemplo de representación de un numero natural en binario
Representación de números naturales en el computador

Los números enteros sin signo

En los lenguajes de programación existen algunos tipos de datos denominados enteros sin signo (unsigned int). Generalmente se definen con 8, 16, 32 o 64 bits.

  •  Con 8 bits se consiguen 2^8 números, desde el 0 hasta el 2^8-1. 2^8=256, con esta cantidad de números se pueden representar todas las letras del alfabeto por ejemplo.  
  •  Con 16 bits se consiguen 2^{16} números, desde el 0 hasta el 2^{16}-1. 2^{16}=65\ 536. 65\ 536 es el número máximo de filas en las hojas de cálculo permitidas por Excel en las versiones  Excel 97, Excel 2000, Excel 2002 y Excel 2003.
  • Con 32 bits se consiguen 2^{32} números, desde el 0 hasta el 2^{32}-1. 2^{32}=4\ 294\ 967\ 296, (se lee cuatro mil doscientos noventa y cuatro millones, novecientos sesenta y siete mil, doscientos noventa y seis). Se estima que la población mundial se encuentre en aproximadamente 8 mil millones de habitantes, es decir con 32 bits podemos representar a un poco más de la mitad de la población mundial. 
  • Con 64 bits se consiguen 2^{64} números, desde el 0 hasta el 2^{64}-1. 2^{64}=18\ 446\ 744\ 073\ 709\ 551\ 616, (se lee dieciciocho trillones, cuatrocientos cuarenta y seis mil setecientos cuarenta y cuatro billones, setenta y tres mil setecientos nueve millones, quinientos cincuenta y un mil seiscientos dieciséis). Se estima que la cantidad de granos de arena del mundo está en el orden de los 4 mil trillones.

Conclusión

Hemos descrito cómo se hace la representación de números naturales en el computador. Básicamente se transforma el número a base 2, pues, en este caso no hay necesidad de representar el signo. También se ha visto que, mientras más bits se tenga para representar un número, más números se podrán representar. Finalmente recordar que, generalmente los tipos de datos que implementan los números naturales en los lenguajes de programación se suelen denominar números enteros sin signo.

Si te ha gustado este artículo, te invitamos a que leas los artículos relacionados con la representación de números enteros en el computador.

Si te interesa investigar más sobre representación de números en el computador, te recomendamos los siguientes libros:
  •  Computer Arithmetic: Algorithms and Hardware Designs de Behrooz Parhami, en donde detalla la representación de números enteros con y sin signo, números reales y la implementación de las principales operaciones aritméticas.
  • Digital Arithmetic  de Miloš D. Ercegovac  y Tomás Lang . En este libro, además de revisar la representación de números enteros y reales, se analizan algoritmos para implementación de rutinas de cálculo numérico como por ejemplo la raíz cuadrada.