stringtranslate.com

decimal entero binario

El estándar IEEE 754-2008 incluye formatos de números decimales de punto flotante en los que el significado y el exponente (y las cargas útiles de NaN ) se pueden codificar de dos maneras, lo que se conoce como codificación binaria y codificación decimal . [1]

Ambos formatos descomponen un número en un bit de signo s , un exponente q (entre q min y q max ) y un significado de p dígitos c (entre 0 y 10 p −1). El valor codificado es (−1) s ×10 q × c . En ambos formatos el rango de valores posibles es idéntico, pero difieren en cómo se representa el significado c . En la codificación decimal, se codifica como una serie de p dígitos decimales (utilizando la codificación decimal densamente empaquetada (DPD)). Esto hace que la conversión a formato decimal sea eficiente, pero requiere una ALU decimal especializada para procesarla. En la codificación decimal entero binario ( BID ), se codifica como un número binario.

Formato

Utilizando el hecho de que 2 · 10 = 1024 es sólo un poco más que 10 · 3 = 1000, los números decimales de 3 n dígitos se pueden empaquetar eficientemente en 10 n bits binarios. Sin embargo, los formatos IEEE tienen significados de 3 n +1 dígitos, lo que generalmente requeriría 10 n +4 bits binarios para representar.

Esto no sería eficiente, porque sólo se necesitan 10 de los 16 valores posibles de los cuatro bits adicionales. Se puede diseñar una codificación más eficiente utilizando el hecho de que el rango del exponente es de la forma 3×2 k , por lo que el exponente nunca comienza con 11. Usando la codificación Decimal32 (con un significado de 3*2+1 dígitos decimales) como ejemplo ( esignifica exponente, mmantisa, es decir, significado):

s 00eeeeee (0)mmm mmmmmmmmmm mmmmmmmmmms 01eeeeee (0)mmm mmmmmmmmmm mmmmmmmmmms 10eeeeee (0)mmm mmmmmmmmmm mmmmmmmmmm
s 1100eeeeee (100)m mmmmmmmmmm mmmmmmmmmms 1101eeeeee (100)m mmmmmmmmmm mmmmmmmmmms 1110eeeeee (100)m mmmmmmmmmm mmmmmmmmmm
s 11110 xxxxxxxxxxxxxxxxxxxxxxxxxxxs 111110 xxxxxxxxxxxxxxxxxxxxxxxxxs 111111 xxxxxxxxxxxxxxxxxxxxxxxxx

Los bits que se muestran entre paréntesis son implícitos : no están incluidos en los 32 bits de la codificación Decimal32, pero están implícitos en los dos bits después del bit de signo.

Las codificaciones Decimal64 y Decimal128 tienen exponentes y campos significativos más grandes, pero funcionan de manera similar.

Para la codificación Decimal128, 113 bits de significado son suficientes para codificar 34 dígitos decimales, y la segunda forma nunca es necesaria.

Grupo

Un número decimal de punto flotante se puede codificar de varias maneras, las diferentes formas representan diferentes precisiones, por ejemplo, 100.0 se codifica como 1000×10 −1 , mientras que 100.00 se codifica como 10000×10 −2 . El conjunto de posibles codificaciones del mismo valor numérico se denomina cohorte en el estándar. Si el resultado de un cálculo es inexacto, la mayor cantidad de datos significativos se conserva seleccionando el miembro de la cohorte con el número entero más grande que se puede almacenar en el significado junto con el exponente requerido.

Rango

El estándar IEEE 754r propuesto limita el rango de números a un significado de la forma 10 n −1, donde n es el número de dígitos decimales enteros que se pueden almacenar en los bits disponibles para que el redondeo decimal se realice correctamente.

Actuación

Una codificación binaria es inherentemente menos eficiente para conversiones hacia o desde datos codificados en decimal, como cadenas ( ASCII , Unicode , etc.) y BCD . Por lo tanto, es mejor elegir una codificación binaria sólo cuando los datos son binarios en lugar de decimales. IBM ha publicado algunos datos de rendimiento no verificados. [2]

Ver también

Referencias

  1. ^ "PROYECTO de norma para aritmética de coma flotante P754" (PDF) . 2006-10-04 . Consultado el 1 de julio de 2007 .[ enlace muerto permanente ]
  2. ^ "Rendimiento de la biblioteca decimal - 1.01".

Otras lecturas