Decimal a IEEE-754

Pasos a Seguir

Método 1

  1. Anotamos el bit de signo fijandonos en el número decimal
      • 0 (positivo)
      • 1 (negativo)
  1. Pasamos el número a binario en valor absoluto, si hay decimales, pasarlos también a binario pero manteniendo la coma en su lugar
  1. Normalizamos el número
    1. Normalizar consiste en desplazar la coma hasta situarse a la derecha del bit más significato que contenga un uno
      • Los bits que quedan tras la coma se conocen como la mantissa
      • Anotamos los desplazamiento necesarios (n)(n) hasta llegar a dicho bit para hallar el valor del exponente
        • Hacia la izquierda → exponente positivo
        • Hacia la derecha → exponente negativo
  1. Para hallar el exponente en exceso a 127, sumamos dicha cantidad al valor de nuestro exponente → 127+n=exp127 + n = \bold{exp}
    1. Pasamos a binario el exp para conocer el valor de los bits que debe contener el número en exceso a 127
  1. Concatenamos los bits calculados anteriormente para formar el número en formato IEEE-754
    1. Resultado IEEE-754 → bitSigno (1 bit ) \cup exp (8 bits) \cup mantissa (23 bits)

Método 2 (logaritmos)

💡
Este método se usa para transformar número grandes que nos dan en notación científica
Cambio de base del exponente
  1. Hacemos el logaritmo base 2 del número que nos dan (num)(num) (sin signo, con el ×10n\it\times10^n incluido), y descartamos los decimales del resultado (truncamos)
    1. n=trunc(log2(num))\small\bold n = trunc(\log_2({num}))
  1. Dividimos el numero original entre 2 elevado al resultado (sin decimales) del paso 1
    1. resultado=num2n\small\bold{{resultado}} = \frac{num}{2^n}
  1. Expresamos el resultado del paso anterior con exponente base 2 y le añadimos el signo del número original
    1. (signo) resultado×2n(signo)\ \bold{\small{resultado}} \times 2 ^ n
Pasar resultado×2nresultado \times 2^n a IEEE-754
  1. Anotar el bit de signo según el signo del número → [0|1]
  1. Calcular en exponente en exceso a 127 del exponente con base 2 → 127n=exp127 - n = exp
  1. Pasar la parte decimal a binario para sacar la mantissa (se ignora la parte entera ya que se representa con un bit implícito)

Casos excepcionales

💡
Representar el 0 en IEEE-754
Para representar el cero en el formato IEEE-754, tenemos que tener todos los bits tanto de signo, exponente y mantissa desactivados. Cuando los bits del exponente están todos desactivado, la mantissa de desnormaliza (1.mantissa → 0.mantissa)
0 00000000 00000000000000000000000
💡
Representar el 1 en IEEE-754
Para representar el uno en el formato IEEE-754, tenemos que tener los bits tanto de signo como el de la mantissa desactivados. Los bits del exponente deben ser 127 para así hacer que el exponente sea cero tras restar el exceso a 127
0 01111111 00000000000000000000000

Ejemplo 1 (método normal) → 14.751014.75_{10}

💡
Procedimiento
  1. El bit de signo es 0 dado que el número es positivo
  1. Pasamos 14.75 a binario → 1110. 1100
  1. Normalizamos el número que acabamos de obtener
    1. Número normalizado (mantissa) → 1.110 1100
    2. Desplazamientos de la coma (exponente) → 33
  1. Calculamos el exponente en exceso a 127 → 127+3=130127 +3 = 130
    1. Convertimos el exponente (140140) a binario → 1000 0010
  1. Concatenamos los bits resultantes → 0 (signo, 1 bit) \cup 1000 0010 (exponente, 8 bits) \cup 1100 0000 0000 0000 0000 000 (mantissa, 23 bits)
Resultado → 0 10000010 11000000000000000000000 (IEEE-754, 32 bits)

Ejemplo 2 (logaritmos) → 2.5675×1015-2.5675 \times 10 ^{15}

💡
Procedimiento
  1. Cambio de base del exponente
    1. Calculamos el exponente de la base→ log2(2.5675×1015)51\log_2(2.5675\times10^{15}) \approx 51
    2. Calculamos la mantissa en función del nuevo exponente → 2.5675×1015251=1.140199046\cfrac{2.5675 \times 10 ^{15}}{2^{51}} = 1.140199046
    3. Expresamos en resultado con el signo original 1.140199046×251-1.140199046\times2^{51}
  1. Pasar a IEEE-754
    1. El número es negativo por lo que el bit de signo es 1
    2. El exponente en exceso a 127 es → 127+51=178127 + 51 = 178 que en binario es 1011 0010
    3. La mantissa es 1.140199046 (se ignora el bit implícito)
      1. Pasamos la mantissa a binario → 0010 0011 1110 0100 0001 010
  1. Concatenamos los bits resultantes
Resultado: 1 10110010 00100011111001000001010