El número más grande representable en 64 bits

Qué tan grande puede ser realmente un número representado con solo 64 bits depende menos de los límites del hardware que de cómo se interpreten esos bits. Los comentaristas contrastan formatos numéricos fijos como enteros y flotantes IEEE 754 con esquemas que codifican programas completos de cálculo lambda o máquinas de Turing, permitiendo que 64 bits denoten valores inimaginablemente grandes (por ejemplo, mediante construcciones al estilo Busy Beaver), pero a costa de arbitrariedad, no computabilidad y una aritmética poco usable. Gran parte del debate se centra en qué restricciones hacen falta para evitar codificaciones que “hacen trampa” y si modelos como el cálculo lambda proporcionan una base suficientemente natural y no trivial para definir tales números máximos.

Arbitrariedad de las codificaciones de 64 bits

  • Varios comentarios sostienen que cualquier cadena de 64 bits puede denotar cualquier conjunto elegido de 2⁶⁴ valores; sin restricciones, “el número más grande representable” está mal planteado.
  • Otros responden que esto es pedante: la versión interesante pregunta por el número no trivial más grande bajo una interpretación fija y preexistente.

Cálculo lambda, Busy Beaver y complejidad de Kolmogorov

  • El hilo coincide en que el artículo usa efectivamente el cálculo lambda como un lenguaje descriptivo compacto y “natural”, y luego pregunta por el número más grande describible en 64 bits de ese lenguaje.
  • Esto se relaciona con un crecimiento al estilo Busy Beaver: codificar un programa (por ejemplo, un término lambda) cuya salida numérica crece más rápido que las notaciones estándar para números enormes.
  • Algunos señalan que esto conecta con la complejidad de Kolmogorov / descripciones más cortas, donde distintos formalismos universales solo difieren por factores constantes.

¿Qué tan “arbitrario” es el cálculo lambda binario?

  • Un lado: el cálculo lambda es uno de los formalismos de computación menos arbitrarios; por ello, sus codificaciones son bases significativas.
  • El otro lado: las codificaciones binarias concretas (índices de de Bruijn, codificación unaria, formato auto delimitado) siguen implicando decisiones de diseño, así que no son canónicas de forma única.
  • Los defensores responden que esas elecciones son mínimas, eficientes en bits y están muy alineadas con la semántica del lenguaje.

Números computables vs no computables

  • Aclaraciones: todo entero finito es computable; la mayoría de los números reales no lo son.
  • La discusión se centra en valores de Busy Beaver (enteros, pero la función es no computable) y en la constante de Chaitin (un real canónico no computable).
  • Hay idas y vueltas sobre si “conocer” un valor mediante un oráculo lo haría computable; el consenso: no, la no computabilidad trata de la existencia de un algoritmo, no de un conocimiento oracular hipotético.

“Hacer trampa” con sistemas numéricos personalizados

  • Algunos proponen esquemas triviales de 64 bits en los que, por ejemplo, el patrón de bits “1” significa “un número enorme con nombre” o “ejecuta el algoritmo del artículo”.
  • Otros califican esto como “hacer trampa”: en efecto, estás incorporando la respuesta en el intérprete en lugar de derivarla de un formalismo general y fijo.
  • Una restricción sugerida de forma recurrente: el esquema de representación debe existir antes del concurso específico, y el intérprete no debe contener conocimiento codificado del número enorme.

Otros sistemas numéricos e infinito

  • Se mencionan IEEE754 doubles, infinity, posits y unums, pero se señala que sus rangos son diminutos comparados con números al estilo Busy Beaver codificados con cálculo lambda.
  • Algunos sugieren contar cardinales infinitos (alephs), pero se aclara que el enfoque original es solo en números finitos.