es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué es el valor inicial del exponente -1128 al descomponer un número en un signo, coeficiente entero y exponente?

Antecedentes: Estoy leyendo “Cómo funcionan los números” en el libro Cómo funciona JavaScript de Douglas Crockford.

Un número en JavaScript se representa como number = sign * coefficient * (2 ** exponent). Entiendo esto, pero luego hay una función deconstruct para representar un número entero usando el signo, el coeficiente y el exponente.

Para encontrar el exponente, se toma el valor inicial como -1128.

que es el exponente de ‘Number.MIN_VALUE’ menos el número de bits en el significando menos el bit adicional.

function deconstruct(number) {
  // .....
  exponente = -1128;
  let reduccion = coefficiente;
  while (reduccion !== 0) {
    // .....
  }
}

¿Por qué exponente = -1128? No entiendo la razón para comenzar con este número, por favor ayúdeme a comprender esto.

La función deconstruir completa como se menciona en el libro se encuentra en este enlace.

Se hace una pregunta similar aquí, pero no entendí la respuesta.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La razón por la cual exponente se inicializa en -1128 en la función deconstruct es porque este es el exponente máximo posible para un número en JavaScript. Este valor se obtiene al restar el número de bits en el significando (también conocido como mantisa) más el bit adicional del exponente de Number.MIN_VALUE, que es el número positivo más pequeño que JavaScript puede representar.

    El bit adicional es un bit oculto en el significando que siempre se establece en 1 (excepto para números subnormales). El significando en sí está compuesto por 52 bits. Por lo tanto, el número total de bits en el significando más el bit adicional es 53.

    Entonces, el cálculo es el siguiente:

    exponente = exponente(Number.MIN_VALUE) - bits del significando - bit adicional

    exponente = -1023 - 53 - 1

    exponente = -1128

    Por lo tanto, al comenzar con este valor se asegura que el bucle while en la función deconstruct iterará sobre todas las potencias de 2 posibles que se pueden utilizar para representar el número de entrada.

Comments are closed.