¿Cuál es la diferencia entre una operación de punto flotante de precisión simple y una operación flotante de precisión doble?
Estoy especialmente interesado en términos prácticos en relación con las consolas de videojuegos. Por ejemplo, ¿la Nintendo 64 tiene un procesador de 64 bits y, si lo tiene, eso significaría que es capaz de operaciones de punto flotante de doble precisión? ¿Pueden la PS3 y Xbox 360 realizar operaciones de coma flotante de doble precisión o solo una precisión única y, en general, se utilizan las capacidades de doble precisión (si existen)?
floating-point
precision
processor
operations
tweetypi
fuente
fuente
Respuestas:
Nota: la Nintendo 64 tiene un procesador de 64 bits, sin embargo:
De Webopedia :
El formato de doble precisión IEEE en realidad tiene más del doble de bits de precisión que el formato de precisión simple, así como un rango mucho mayor.
Del estándar IEEE para aritmética de coma flotante
Precisión simple
La representación estándar de coma flotante de precisión simple IEEE requiere una palabra de 32 bits, que puede representarse como numerada del 0 al 31, de izquierda a derecha.
los 23 bits finales son la fracción 'F':
El valor V representado por la palabra se puede determinar de la siguiente manera:
0<E<255
entonces,V=(-1)**S * 2 ** (E-127) * (1.F)
donde "1.F" está destinado a representar el número binario creado al prefijar F con un 1 inicial implícito y un punto binario.V=(-1)**S * 2 ** (-126) * (0.F)
. Estos son valores "no normalizados".En particular,
Precisión doble
La representación estándar de coma flotante de precisión doble IEEE requiere una palabra de 64 bits, que puede representarse como numerada del 0 al 63, de izquierda a derecha.
los 52 bits finales son la fracción 'F':
El valor V representado por la palabra se puede determinar de la siguiente manera:
0<E<2047
entonces,V=(-1)**S * 2 ** (E-1023) * (1.F)
donde "1.F" está destinado a representar el número binario creado al prefijar F con un 1 inicial implícito y un punto binario.V=(-1)**S * 2 ** (-1022) * (0.F)
estos son valores "no normalizados".Referencia:
ANSI / IEEE Standard 754-1985,
Standard for Binary Floating Point Aritmetic.
fuente
**
' es exponenciaciónLeí muchas respuestas, pero ninguna parece explicar correctamente de dónde viene la palabra doble . Recuerdo una muy buena explicación dada por un profesor universitario que tuve hace algunos años.
Recordando el estilo de la respuesta de VonC, una única representación de coma flotante de precisión utiliza una palabra de 32 bits.
Representación:
(Solo para señalar, el bit de signo es el último, no el primero).
Una representación de coma flotante de doble precisión utiliza una palabra de 64 bits.
Representación:
Como puede observar, escribí que la mantisa tiene, en ambos tipos, un poco más de información en comparación con su representación. De hecho, la mantisa es un número representado sin todo su no significativo
0
. Por ejemplo,Esto significa que la mantisa siempre tendrá la forma
0.α 1 α 2 ... α t × β p
donde β es la base de la representación. Pero como la fracción es un número binario, α 1 siempre será igual a 1, por lo que la fracción se puede reescribir como 1.α 2 α 3 ... α t + 1 × 2 p y se puede suponer implícitamente el 1 inicial, haciendo espacio para un bit extra (α t + 1 ).
Ahora, obviamente es cierto que el doble de 32 es 64, pero no es de ahí de donde viene la palabra.
La precisión indica el número de dígitos decimales que son correctos , es decir, sin ningún tipo de error de representación o aproximación. En otras palabras, indica cuántos dígitos decimales se pueden usar con seguridad .
Dicho esto, es fácil estimar la cantidad de dígitos decimales que se pueden usar de forma segura:
fuente
De acuerdo, la diferencia básica en la máquina es que la precisión doble usa el doble de bits que una sola. En la implementación habitual, son 32 bits para un solo, 64 bits para el doble.
Pero lo que hace que la media ? Si asumimos el estándar IEEE, entonces un solo número de precisión tiene aproximadamente 23 bits de la mantisa y un exponente máximo de aproximadamente 38; una precisión doble tiene 52 bits para la mantisa y un exponente máximo de aproximadamente 308.
Los detalles están en Wikipedia , como siempre.
fuente
Para agregar a todas las maravillosas respuestas aquí
En primer lugar, flotante y doble se usan para representar números fraccionarios. Entonces, la diferencia entre los dos radica en el hecho de cuánta precisión pueden almacenar los números.
Entonces, básicamente queremos saber con qué precisión se puede almacenar el número y es lo que llamamos precisión.
Citando a @Alessandro aquí
El flotador puede almacenar con precisión entre 7 y 8 dígitos en la parte fraccionaria, mientras que Double puede almacenar con precisión entre 15 y 16 dígitos en la parte fraccional
Entonces, el flotador puede almacenar el doble de la cantidad de parte fraccional. Es por eso que Double se llama double the float
fuente
En cuanto a la pregunta "¿Pueden ps3 y xbxo 360 realizar operaciones de coma flotante de doble precisión o solo precisión simple y, en el uso de generel, se utilizan las capacidades de doble precisión (si es que existen)?"
Creo que ambas plataformas son incapaces de doble punto flotante. El procesador Cell original solo tenía flotantes de 32 bits, lo mismo con el hardware ATI en el que se basa la XBox 360 (R600). The Cell recibió soporte de doble punto flotante más adelante, pero estoy bastante seguro de que la PS3 no usa ese chip.
fuente
Básicamente, la aritmética de coma flotante de precisión simple trata con números de coma flotante de 32 bits, mientras que la precisión doble trata con 64 bits.
El número de bits en doble precisión aumenta el valor máximo que se puede almacenar, así como también aumenta la precisión (es decir, el número de dígitos significativos).
fuente
Todos han explicado con gran detalle y nada que pueda agregar más. Aunque me gustaría explicarlo en los Términos de Layman o en INGLÉS
.....
Una variable, capaz de almacenar o representar "1.9" proporciona menos precisión que la que puede contener o representar 1.9999. Estas fracciones pueden suponer una gran diferencia en grandes cálculos.
fuente
La precisión doble significa que los números tardan el doble de la longitud de la palabra en almacenarse. En un procesador de 32 bits, las palabras son todas de 32 bits, por lo que las dobles son de 64 bits. Lo que esto significa en términos de rendimiento es que las operaciones con números de doble precisión tardan un poco más en ejecutarse. Entonces obtienes un mejor rango, pero hay un pequeño impacto en el rendimiento. Este golpe es mitigado un poco por las unidades de coma flotante de hardware, pero sigue ahí.
El N64 utilizaba un NEC VR4300 basado en MIPS R4300i, que es un procesador de 64 bits, pero el procesador se comunica con el resto del sistema a través de un bus de 32 bits de ancho. Entonces, la mayoría de los desarrolladores usaron números de 32 bits porque son más rápidos, y la mayoría de los juegos en ese momento no necesitaban la precisión adicional (por lo que usaron flotantes no dobles).
Los tres sistemas pueden realizar operaciones flotantes de precisión simple y doble, pero podrían no hacerlo debido al rendimiento. (aunque casi todo después de que el n64 usó un bus de 32 bits, así que ...)
fuente
En primer lugar, flotante y doble se usan para representar números fraccionarios. Entonces, la diferencia entre los dos radica en el hecho de cuánta precisión pueden almacenar los números.
Por ejemplo: tengo que almacenar 123.456789 Uno puede almacenar solo 123.4567 mientras que otro puede almacenar el 123.456789 exacto.
Entonces, básicamente queremos saber con qué precisión se puede almacenar el número y es lo que llamamos precisión.
Citando a @Alessandro aquí
La precisión indica el número de dígitos decimales que son correctos, es decir, sin ningún tipo de error de representación o aproximación. En otras palabras, indica cuántos dígitos decimales se pueden usar con seguridad.
El flotador puede almacenar con precisión entre 7 y 8 dígitos en la parte fraccionaria, mientras que Double puede almacenar con precisión entre 15 y 16 dígitos en la parte fraccional
Entonces, doble puede almacenar el doble de la cantidad de parte fraccional que el flotador. Es por eso que Double se llama double the float
fuente
De acuerdo con IEEE754 • Estándar para almacenamiento en coma flotante • Estándares de 32 y 64 bits (precisión simple y precisión doble) • Exponente de 8 y 11 bits respectivamente • Formatos extendidos (mantisa y exponente) para resultados intermedios
fuente
El número de precisión simple usa 32 bits, con MSB como bit de signo, mientras que el número de precisión doble usa 64 bits, MSB es bit de signo
Precisión simple
SEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFF.(SIGN+EXPONENT+SIGNIFICAND)
Precisión doble:
SEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.(SIGN+EXPONENT+SIGNIFICAND)
fuente