Representación de números enteros
En esta página, aprenderás cómo las computadoras almacenan enteros no negativos.
Como saben, los números aparecen en todas partes en los algoritmos informáticos —incluso si los números no son el tema. Por ejemplo, el usuario puede estar interesado en una imagen, pero esa imagen es una abstracción sobre los números. Los números también se utilizan para encontrar un elemento específico en una lista. En las siguientes páginas, observará más de cerca los números dentro de la computadora.
-
El factorial de un número entero positivo n (escrito "n!") es el producto de todos los números enteros desde 1 hasta n. Por ejemplo:
5! = 1 \times 2 \times 3 \times 4 \times 5 = 120
Prueba estas entradas:
Puede que veas diferentes resultados dependiendo del procesador de tu computadora.




El "e+" significa "por diez elevado a la potencia de" por lo que esta anotación significa 2.6525285981219103 × 1032 = 265,252,859,812,191,030,000,000,000,000,000.
Hardware de computadora de ancho fijo
Ancho (width): el número de bits que procesa una CPU a la vez
Palabra (word): una secuencia binaria con esa cantidad de bits
Entonces, ¿por qué Snap! muestra 20! en la representación ordinaria de números enteros, pero 30! en notación científica? Cada modelo de computadora está diseñado con un cierto ancho, el número de bits que el procesador lee de la memoria o escribe en la memoria a la vez. Ese número de bits se denomina palabra. A partir de 2016, la mayoría de las computadoras nuevas tienen 64 bits de ancho. ¡La primera microcomputadora, vendida en 1971, tenía cuatro bits de ancho!
Si obtuviste una respuesta en notación científica para 20!, estás usando una computadora de 32 bits.
DAT-1.B.1
Una palabra de 64 bits representa 264 diferentes valores. Usamos la mitad para los números negativos, uno para el cero y el resto para los positivos. La mitad de 264 (que es 263 = 9,223,372,036,854,775,808) es aproximadamente 9 × 1018. ¡Eso significa que los 19 dígitos de 20! apenas cabe en una palabra de 64 bits. ¡Pero no los 33 dígitos de 30! Por lo tanto, el hardware de la computadora reporta un error de desbordamiento (overflow en inglés), y Snap! calcula una aproximación.
¿Los anchos de los procesadores siempre son potencias de dos?
Los anchos de procesador no tienen que ser una potencia de dos. Algunas computadoras antiguas—del tipo que se ve en películas antiguas que llenaban una habitación grande —usaban palabras de 12-bit, 36-bit, y 60-bit. Pero las computadoras personales modernas comenzaron en 8 bits y los anchos se han duplicado con cada nueva generación.
- Experimenta en Snap!. ¿Cuál es el primer número entero cuyo factorial no cabe en una palabra?
Números grandes
(Bignums) Un número entero de varias palabras se denomina bignum.
DAT-1.B.2
¿Por qué los lenguajes de programación no pueden usar más de una palabra para representar un entero? Pueden. Es solo que una sola instrucción de lenguaje de máquina solo puede agregar números de una palabra. Un lenguaje de programación debe trabajar un poco más duro para que la sume funcione con valores de varias palabras. No todos los idiomas hacen esto, pero los idiomas de más alto nivel sí.
El diseño de un lenguaje de programación no es solo una cuestión de gustos; puede ser una cuestión de vida o muerte. Entre 1985 y 1987, una máquina terapéutica de rayos X mató a cuatro pacientes e hirió gravemente a dos más debido a varios errores en su software; uno de los errores era que un contador que se mantenía en una variable de ocho bits de ancho alcanzaría su valor máximo de 127 y luego desbordamiento a cero en lugar de 128. Cuando la variable era cero, no se realizaba una comprobación de seguridad importante. Esto no habría sucedido si el software hubiera sido escrito en un mejor lenguaje de programación.
Puedes usar bignums en cualquier proyecto de Snap! importando la biblioteca "Bignums, racionales exactos, complejos #s".
-
Haz clic en este bloque en el área de programas:
-
Ahora prueba
30!
otra vez.
Este valor (exactamente correcto) es diferente del valor (redondeado) del punto flotante anterior. (Más sobre el punto flotante en un momento).
-
Prueba
200!
. El resultado reportado no encajará en tu pantalla, pero puedes verlo de esta manera:
- Mantén pulsada la tecla de control y haz clic en el bloque
.
- En el menú que aparece, elige "imagen de resultado".
- Una imagen se descargará en tu computadora o se abrirá en una nueva pestaña. Deberías poder ampliarla para leer los dígitos.
- ¿Cuántos dígitos hay en
200!
? (No cuentes a mano; tienes una computadora.)