Thursday 29 December 2016

Normalized Form Binary Options

Esta página es traducida del original usando el traductor de Google. IEEE 754 - Flotador de aritmética binaria estándar Autor: Yashkardin Vladimirnbsp nbsp softelectro. ru nbsp nbsp Esta norma está diseñada asociación IEEE (Instituto de Ingenieros Eléctricos y Electrónicos) y se utiliza para representar números reales (punto flotante) en código binario. El estándar más utilizado para el punto flotante, utilizado por muchos microprocesadores y dispositivos lógicos y software. Título completo de la norma en asociación IEEE: Norma IEEE para aritmética binaria de punto flotante (ANSI / IEEE Std 754-1985) Título de la norma en la Comisión Electrotécnica Internacional IEC: IEC 60559: 1989, Aritmética binaria de punto flotante para sistemas de microprocesador (IEC 559: 1989 - la antigua designación de la norma) En 2008, la asociación ha publicado IEEE estándar IEEE 754-2008, que incluye el estándar IEEE 754-1985. 2. Breve descripción de la norma. La edición original de la norma: Norma IEEE para la aritmética binaria de punto flotante nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp Copyright 1985 por el Instituto de Ingenieros Eléctricos y Electrónicos, Inc 345 East 47th Street, Nueva York, NY 10017, EE. UU. Norma contiene 23 páginas de texto en 7 secciones y un anexo: 1.Escopio 1.1 Objetivos de implementación 1.2 Inclusiones 1.3 Exclusiones 2.Definiciones 3.Formatos 3.1 Conjuntos de valores 3.2 Formatos básicos 3.3 Formatos extendidos 3.4 Combinaciones de formatos 4.Rondeado 4.1 Ronda To 4.2 Rounding Roundings 4.3 Precisión de redondeo 5. Operaciones 5.1 Aritmética 5.2 Raíz cuadrada 5.3 Conversiones de formato de punto flotante 5.4 Conversión entre formatos de punto flotante y entero 5.5 Número de punto flotante redondo a valor entero 5.6 Conversión de decimal binario 5.7 Comparación 6.Infinity, NaNs y Signed Zero 6.1 Aritmética infinita 6.2 Operaciones con NaNs 6.3 El bit de signo 7.Excepciones 7.1 Operación no válida 7.2 División por cero 7.3 Desborde 7.4 Desbordamiento 7.5 Inexacta 8.Traps 8.1 Trampero 8.2 Precedencia A. Recommended Funciones y predicados nbsp nbsp nbsp nbspLamentablemente , El IEEE ha evolucionado de una organización de ingeniería pública internacional (que fue originalmente) una organización comercial. Esta organización es propietaria de los derechos de autor para publicar el estándar IEEE754-1985. Así que si quieres leer, con el estándar original, tienes que comprarlo por alrededor de 80. Sin embargo, la ley rusa me permite comentar sobre la enseñanza de esta norma. Por lo tanto, la otra enfermedad dar una presentación arbitraria de la norma y expresar su opinión sobre ella para fines de formación. El estándar IEEE 754-1985 determinará: Ser normalizado como números de coma flotante positivos y negativos Cómo representar los números de coma flotante desnormalizados positivos y negativos Cómo representar el número de cero Como un valor especial para representar el infinito (Infiniti) Cómo representar un valor especial (NaN o NaNs) Cuatro modos de redondeo IEEE 754-1985 define cuatro formatos para números de coma flotante: Single-precision (single-precision) 32-bit Double-precision (doble precisión) 64-bit With single Precisión extendida (precisión extendida simple) 43 bits (raramente utilizado) Precisión doble-extendida (precisión extendida doble) 79 bits (usan típicamente el pedacito 80) 3. Conceptos básicos en la representación de números de punto flotante. 3.1 Presentación de una forma exponencial normalizada. Tome, por ejemplo, el número decimal 155.625 Imagine el número en una forma exponencial normalizada: 1,55625872910 2 1,556258729exp 10 2 Número 1,556258729exp 10 2 consta de dos partes: una mantisa M 1,55625 y el exponente exp 10 2 Si el Mantisa está en el rango 1 -2. 3.2 Presentación de una forma exponencial desnormalizada. Tomemos, por ejemplo, el número decimal 155.625 Imagine el número de camino exponencial desnormalizado: 0,155625872910 3 0,1556258729exp 10 3 El número 0,1556258729exp 10 3 consta de dos partes: una mantisa M 0,155625 y exponente exp 10 3 Si la Mantisa está en el rango 0,1 -3. 3.3 Conversión de decimal en número de coma flotante binario. Nuestro problema se reduce a números de punto flotante decimal en números binarios de punto flotante en forma normalizada exponencial. Para ello ampliamos el número dado de dígitos binarios: 155.625 187292 7 087292 6 087292 5 187292 4 187292 3 087292 2 187292 1 187292 0 187292 -1 087292 -2 187292 -3 155.625 128 0 0 16 8 0 2 1 0,5 0 0,125 155,625 10 10011011,101 2 - el número de punto flotante decimal y binario Deje que el número resultante a la forma normalizada en sistema decimal y binario: 1,556258729exp 10 2 1,00110111018729exp 2 111 Como resultado, tenemos los principales componentes de La exponencial normalizada de los números binarios: Mantisa M1.0011011101 Exponente exp 2 111 4. Descripción conversión de números de IEEE 754. 4.1 La transformación de un número binario normalizado en formato de 32 bits IEEE 754 La aplicación principal en tecnología y formatos de programación fueron 32 y 64 Bits Por ejemplo, en VB utilizando los tipos de datos único (32 bits) y doble (64 bits). Tenga en cuenta la transformación del formato binario 10011011.101 formato de una sola precisión (32 bits) IEEE Standard 754. Otros formatos de los números en IEEE 754 es una copia ampliada de la precisión simple. Para proporcionar el número en el formato IEEE 754 de precisión simple debe llevarlo a la forma normalizada binaria. En 3, hemos hecho esta conversión en el número 155.625. Ahora considere, como un número binario normalizado se convierte en un formato de 32 bits IEEE 754 Descripción de la transformación en formato de 32 bits IEEE 754: El número puede ser o -. Por lo tanto, juegue un poco para designar el signo de: 0-positive 1-negative Este bit más significativo a la secuencia de 32 bits. Entonces vaya los bits del exponente, esto asigna 1 byte (8 pedacitos). El expositor puede ser, como el número, con el signo o -. Para determinar el signo del exponente, no introducir otro bit de signo, agregue el desplazamiento al exponente en el medio byte 127 (0111 1111). Es decir, si nuestra exhibición 7 (111 en binario), entonces desplazó el exponente 7 127 134. Y si nuestros expositores era -7, entonces cabinas de desplazamiento 127-7 120. Expresor sesgado se escribe en los 8 bits asignados. Sin embargo, cuando necesitamos obtener números binarios exponenciales, simplemente restamos 127 de este byte. Los 23 bits restantes reservados para la mantisa. Sin embargo, el primer bit de la mantisa binaria normalizada es siempre 1, ya que el número está en el rango 1 La tabla muestra el número decimal 155.625 en el formato de 32 bits IEEE754: 001 1011 1010 0000 0000 0000 2 971 87761,99584e292 De lo anterior, Dado que la mayor parte de los números en el formato IEEE754 tiene un pequeño error relativo estable: El error relativo máximo posible para el número es Single 2 -23 100 11,920928955078125e-6 El error relativo máximo posible para el número de Double 2 -52 100 2,2204460492503130808472633361816e-14 7.5 Información general sobre el número de estándar IEEE de simple y doble precisión 754. Tabla 3. Información sobre el formato 32/64 bits en el estándar ANSI / IEEE Std 754-1985 número de longitud, desplazamiento de bits exponencial (E ), Bits el resto de la mantisa (M), bits desnormalizados número binario normalizado número binario desnormalizado número de decimal F (-1) S 87292 (E -126) 8729 M / 2 23 F (-1) S 87292 (E - 87222 (E-1023) 8729 (87) 8729 M / 2 52 Número normalizado de decimal F (-1) S 87292 (E-127) 8729 (1 M / 2 23) . Máx. Número de error Rel. Máx. Error denorms. Número Rel. Máx. Normas de error. Número 2 -149 8776 1,401298468729e -45 2 -1074 8776 4,940656468729e -324 2 127 8729 (2-2 -23) 8776 3,402823478729e 38 2 1023 8729 (2-2 -52) 8776 1,797693138729e 308 8 Los números de redondeo en el estándar IEEE 754. Al presentar los números de punto flotante en el estándar IEEE 754, los números suelen ser redondeados. La norma proporciona cuatro formas de redondear los números. Formas de redondeo de números de IEEE 754: Redondeo tendiendo al entero más cercano. El redondeo tiende a cero. El redondeo tiende a 8734 El redondeo tiende a -8734 Tabla 3. Ejemplos de redondeo a un decimal al número entero más cercano ¿Cómo se redondea en los ejemplos de la Tabla 3. Cuando convierte un número para elegir una de las formas de redondeo. Por defecto, esta es la primera forma, redondeando al entero más cercano. A menudo en los diferentes dispositivos que utilizan el segundo método - redondeado a cero. Al redondear a cero, simplemente descarte los números de nivel sin sentido, por lo que este es el más fácil en la implementación de hardware. 9. Problemas informáticos causados ​​por el uso del estándar IEEE754. El estándar IEEE 754 es ampliamente utilizado en ingeniería y programación. La mayoría de los microprocesadores modernos se fabrican con la realización de hardware de representaciones de variables reales en el formato de IEEE754. Lenguaje de programación y el programador no puede cambiar esta situación, un reposo de un número real en el microprocesador no existe. Al crear la representación IEEE754-1985 estándar de una variable real en forma de 4 o 8 bytes parecen valor muy grande, ya que la cantidad de RAM MS-DOS era igual a 1 MB. Un programa en este sistema podría ser utilizado sólo 0,64 MB. Para sistemas operativos modernos el tamaño de 8 bytes es nulo y sin valor, sin embargo las variables en la mayoría de los microprocesadores continúan en el formato IEEE754-1985. Considere la computación de error, causada por el uso de números en el formato de IEEE754 9.1 Errores asociados con la exactitud de la representación de números reales en el formato de IEEE754. Una reducción peligrosa. Este error siempre está presente en los cálculos de la computadora. La razón de su ocurrencia se describe en el párrafo 7.4. -6 para doble 10 -14 Los errores absolutos pueden ser significativos, como para single 10 31 y para double 10 292, que pueden causar problemas con los cálculos. Si el recuento de la muestra en el papel, la respuesta es 1. El error absoluto es 7. ¿Por qué conseguir la respuesta incorrecta? El número 123456789 en el solo 4CEB79A3hex (ieee) 123456792 (dec) el informe absoluto del error es 3 Número 123456788 en el solo 4CEB79A2hex (ieee) 123456784 (dec) El informe de error absoluto es -4 Error relativo en los números iniciales de aproximadamente 3,24 e-6 Como resultado, un error relativo de operación del resultado fue de 800, es decir, aumentado en 2,5 y 8 veces. Esto es lo que yo llamo una reducción peligrosa. Es decir, disminución catastrófica de la precisión en la operación en la que el valor absoluto del resultado es mucho menor que cualquiera de las variables de entrada. De hecho, la precisión de error de la representación de los más inocuos en los cálculos de computadora, y por lo general muchos programadores no están prestando atención. Sin embargo, usted puede ser muy frustrante. 9.2 Errores asociados con la coerción inapropiada de los tipos de datos. Error salvaje. Estos errores son causados ​​por el hecho de que el número original presentado en el formato de simple y doble en un formato que no suelen ser iguales entre sí. Por ejemplo: el número original 123456789,123456789 Single: 4CEB79A3 123456792,0 (dec) Doble: 419D6F34547E6B75 123456789,12345679104328155517578125 La diferencia entre la cantidad única y doble: 2,87654320895671844482421875 Aquí hay un ejemplo para VB: El error relativo del resultado es: 8734 (Infinito) Este error se llama cero sucio. Si las variables conducen al mismo tipo, entonces este error no sucederá. Por lo tanto, las variables y los resultados intermedios de los cálculos deben llevarse al mismo tipo de datos. Por ejemplo, el requisito de mostrar el mismo tipo descrito en el lenguaje estándar C a ISO / IEC 9899: 1999. Preste atención al hecho de que no basta con traer todos los datos originales a un solo tipo. Necesario para llevar los resultados de las operaciones intermedias al mismo tipo. Aquí hay un ejemplo de un error en el resultado intermedio: Aquí el error surge porque el resultado intermedio de 1/3 en la línea c c-1/3 será de tipo doble, no único. Para deshacerse del error hay que dar un resultado intermedio al tipo de operador único usando CSng de conversión. Un ejemplo de traer el tipo de datos para GNU C, enviado por Gregory Sitkarevym: En la segunda versión se puede ver que la división de las constantes en el resultado intermedio se da al tipo de float (simple precisión en C). Estas opciones se compilaron y ejecutaron utilizando el GNU C. Si compila y ejecuta las opciones anteriores se muestran en el VC (Visual Studio), los resultados se invierten. Es decir, la opción 2 sería el resultado de -9.934108, y la opción 1 Resultado: 0.000000. Por lo tanto puede ser conclusión decepcionante que el resultado de los cálculos puede depender del tipo y la versión del compilador. En este caso, podemos suponer que el compilador de VC da automáticamente los tipos de variables y el intento de traer a la fuerza el mismo tipo falla. Si la opción 1 (sin el molde) para cumplir con doble precisión variable (doble), entonces el error no traerá datos y Resultado 0.000000 Así que en la mayoría de los casos para deshacerse de los datos de molde es simplemente utilizar el tipo de datos doble y olvidar Sobre el tipo de single (float). Errores computacionales causados ​​por no aportar el tipo de datos que llamo los Errores salvajes en lo que respecta a la ignorancia de los estándares y la teoría de la programación (es decir, con una educación básica deficiente) 9.3 Errores causados ​​por el cambio de la mantisa. Agujeros circulares. Estos errores se asocian con la pérdida de precisión del resultado en números de intersección de mantisas incompletas en el eje real. Si los números de mantisa no se intersecan en el eje real, entonces suma y resta entre estos números son imposibles. Por ejemplo, tomamos el número de Single: 47FFFFFF 131071,9921875 (dec) En el sistema binario, este número se parece a: 11111111111111111,1111111 Mostramos algunas operaciones de la computadora de la adición, y este número en el formato de dígitos únicos significativos en el Mantisa del número binario en el formato de Single no más de 24 Red indica las cifras más allá de este límite y no están involucradas en el formato Single 1. adición con el mismo número (el cambio de error 0.0). 2. Además del número de menor de 2 veces (cambio de error - 0,00390625). 3. adición con un número menor de 2 23 veces (cambio de error - 0,007812). 4. adición con un número menor de 2 24 veces (cambio de error - 0,007812). En este último caso, la mantisa de los números se separa, y las operaciones aritméticas con estos números carecen de sentido. Como puede verse por los ejemplos anteriores, se produce un error de cambio si los números normalizados iniciales son diferentes exponentes. Si los números difieren en más de 2 23 (para simple) y 2 52 (para doble), entonces la suma y la resta entre estos números no son posibles. El resultado de error relativo máximo de la operación es de aproximadamente 5,96 e-6, que no excede un error relativo de representación del número (p.9.1). Aunque el error relativo aquí está bien, hay otros problemas. En primer lugar, trabajar con los números sólo en un estrecho rango del eje real, donde la mantisa se cruzan. En segundo lugar, para cada fuente del límite de un bucle llamado agujero cíclico. Permítanme explicar, si hay un ciclo en el que el número original se agrega a la suma, hay un límite numérico en la cantidad para este número. Es decir, la cantidad que llega a cierto tamaño deja de aumentar añadiéndola al número original. Aquí está un ejemplo de un agujero cíclico en el sistema de control automático: Hay una planta farmacéutica que produce tabletas que pesan 10 mg. Consiste en: máquina formadora, tanque de almacenamiento de 500 kg, máquinas de embalaje, sistema de control automático. La máquina de moldeo se alimenta en el búnker en 10 tabletas a la vez. La máquina de llenado toma una píldora. El sistema de control automático tiene en cuenta los comprimidos recibidos en la tolva de la máquina de moldeo y sacados de las máquinas de envasado de búnker. Es decir, hay un programa que muestra la producción de la tolva de llenado en kg. Cuando en el búnker será más de 500 kg máquina de moldeo de productos se encuentra en una ruptura, que incluye el código en el búnker será de 200 kg de producto. Máquina de llenado para parar si el búnker es menos de 10 libras y comenzará cuando el búnker será sobre el producto de 100 kilogramos. Ambos coches pueden parar de tiempo para servir, no dependientes el uno del otro (gracias al bunker). Aquí está un ejemplo de un agujero cíclico en el sistema de control automático: Hay una planta farmacéutica que produce tabletas que pesan 10 mg. Consiste en: máquina de formar, tanque de almacenamiento de 500 kg, máquinas de embalaje, como usted sabe, que trabaja en un bucle sin fin. Supongamos que una máquina de llenado de un día estuviera demasiado tiempo y un búnker lleno de hasta 300 kg. Qué sucede después de encenderlo Un ejemplo simplificado de la gestión del ciclo del programa: En este ejemplo, la máquina de llenado recogió de la tolva 100 kg de producto y el peso de los productos en la tolva no ha cambiado. ¿Por qué no cambiar Porque los números de la mantisa 300 y 0.00001 disjuntos formato único. A continuación, llevar el peso de la tolva de la máquina de moldeo a 500 kg y parar. Máquina de llenado tomará todas las tabletas de la tolva y también se detiene. El programa mostrará el peso de 500kg en el búnker. Venga corriendo especialistas, probando sensores, cables, computadoras, y diga que el programa colgó. Pero el programa no cuelga, sigue funcionando sin problemas y cada cheque lo confirmará. Simplemente el número de 0.0001 golpeado en el agujero cíclico y emerger de él no puede. Como resultado, tuvimos la suerte de que era una planta farmacéutica, no la Sayan-Shushenskaya GES. De hecho, un programador experimentado nunca haría una sustracción cíclica (o sumatoria) de esta manera. Este ejemplo es un propósito ficticio, y por lo tanto no puede ser considerado, aunque en términos de matemáticas son todos impecables. Este error es típico de los matemáticos y programadores principiantes. Yo diría que el principal trabajo del programador es luchar con los errores, pero no en la solución matemática del problema. Aquí hay un ejemplo de una solución correcta a este problema, cortesía de Sitkarevym Gregory: El ejemplo anterior se toma del paquete industrial real. Para mayor claridad, simplificamos el ejemplo anterior. Como se puede ver en este ejemplo, el programador tiene que calcular el error del resultado en cada ciclo, para dar cuenta de ello en el siguiente ciclo. Tenga en cuenta que el programador debe estar absolutamente listo para hacer algunos conceptos básicos de las matemáticas no se puede satisfacer en los cálculos en un formato IEEE754. Por ejemplo, las reglas de conmutatividad algebraica (a b) a (a c) b, generalmente no se realizan en estos cálculos. Desafortunadamente, en la educación fundamental de hoy que está recibiendo muy poca atención. 9.4 Errores debidos al redondeo. Sucio cero. Cuando los cálculos de la computadora pueden distinguir dos tipos de redondeo: 1. El resultado de la operación aritmética siempre es redondeado. 2. La salida y la entrada de un número real en el cuadro Windows es redondeado. En el primer caso, la variable se redondea a uno de los 4 tipos de redondeo IEEE754, el redondeo por defecto se produce al entero más cercano. En este caso, la variable recibe un nuevo valor redondeado. En la p.9.2 consideramos la adición de dos números idénticos: 1. Adición con el mismo número (el cambio de error 0.0). Aquí el resultado de la adición de dos números es absolutamente preciso, pero el resultado fue redondeado por un microprocesador. Por lo tanto, el resultado exacto se ha añadido al error de redondeo. En general, el error de redondeo está dentro de la exactitud de los números. En el segundo caso, la variable no cambia su significado, sólo en la ventana de Windows muestra el valor redondeado de los números reales. Resulta que la variable original y mostrarla en Windows es un número diferente. Esto no es culpa del formato IEEE754, se trata de un error de Windows. La variable individual se muestra en las cifras significativas de Windows 7 redondeadas al número entero más cercano. 3DFCD6EA 0,12345679104328155517578125 La casilla se muestra como 0,1234568 Para variables de tipo Doble a una ventana de Windows muestra 15 dígitos significativos redondeados al número entero más cercano. 3FBF9ADD3746F67D 0,12345678901234609370352046653351862914860248565673828125 muestra como ,123456789012346 La cuestión de la importancia variable cuando entramos en la ventana de Windows 0,123456789012346 Este valor será igual a este número: 3FBF9ADD3746F676 0,1234567890123459965590058118323213420808315277099609375 Es decir, el valor de 3FBF9ADD3746F67D por lo general, no puede insertar directamente en El código del programa. Pero podemos engañar y pegar en el x 0.123456789012346 1 E-16. La variable resultante será igual a 3FBF9ADD3746F67D (esto se usa en el ejemplo de cero sucio) La pantalla o un PC a través de la ventana es un número imposible. Como resultado de la acción surge Windows una serie de situaciones desagradables. 1. No tiene capacidad técnica para mostrar o ingresar los valores exactos. De las variables en las ventanas, lo que en sí mismo es muy triste. 2. El surgimiento de errores graves, como el cero sucio. Cero sucio es cuando usted o el programa asume que la variable no es igual a cero - cero Muy a menudo, este error ocurre en la interfaz del operador de la máquina. Por ejemplo, después de restablecer el peso de los programas de empaquetado. El resultado del programa en el ejemplo anterior Como resultado, una variable que el operador considera cero - cero no es igual Error relativo del resultado es infinito. En la comparación lógica las operaciones que no son cero pueden desviar la ejecución del programa a otra rama del algoritmo. 9.5 Velocidad de error en los números norma / denorma. El número de asesinos. Estos errores ocurren cuando se trabaja con números ubicados en el borde de la representación numérica normalizada / desnormalizada. Se asocian con diferencias en la representación de números en formato IEEE754 y transfieren las fórmulas de diferencia en números reales de formato IEEE754. Es decir, el dispositivo (o software) debe utilizar diferentes algoritmos dependiendo de la posición de un número real en un formato de línea numérica. Además, conduce a una complicación de dispositivos y algoritmos, todavía hay incertidumbres de la zona de transición. La incertidumbre de la zona de transición es que la norma no define un valor específico del límite de transición. En esencia, el límite de transición entre dos números reales: El último número 000FFFFFFFFFFFFF desnormalizado: valor decimal exacto de este número: 2,2250738585072008890245868760858598876504231122409594654935248025624400092282356951787758888037591552642309780950 4343120858773871583572918219930202943792242235598198275012420417889695713117910822610439719796040004548973919380791 9893608152561311337614984204327175103362739154978273159414382813627511383860409424946494228631669542910508020181592 6642134996606517803095075913058719846423906068637102005108723282784678843631944515866135041223479014792369585208321 5976210663754016137365830441936037147783553066828345356340050740730401356029680463759185831631242245215992625464943 0083685186171942241764645513713542013221703137049658321015465406803539741790602258950302350193751977303094576317321 0852507299305089761582519159720757232455434770912461317493580281734466552734375e-308 y el primer número 0010000000000000 normalizada: valor decimal exacto de este número: 2,2250738585072013830902327173324040642192159804623318305533274168872044348139181958542831590125110205640673397310 3581100515243416155346010885601238537771882113077799353200233047961014744258363607192156504694250373420837525080665 0616658158948720491179968591639648500635908770118304874799780887753749949451580451605050915399856582470818645113537 9358049921159810857660519924333521143523901487956996095912888916029926415110634663133936634775865130293717620473256 3178148566435087212282863764204484681140761391147706280168985324411002416144742161856716615054015428508471675290190 3161322778896729707373123334086988983175067838846926092773977972858659654941091369095406136467568702398678315290680 984617210924625396728515625e-308 Dado que el límite es un número real, su precisión se puede ajustar hasta el infinito y los dispositivos digitales o el programa no tiene el bit de decisión de incluir algún intervalo de números. Por ejemplo, un error 53632 para PHP, que causó pánico a principios de 2011 lt htmlgt ltbodygt ltphp d 2.2250738585072011e-308 gt lt final / bobygt lt / htmlgt Introduzca un número 2.2250738585072011e-308 causó un bloqueo del proceso con casi 100 CPU de carga . Otros números de este rango de problemas no causados ​​(2.2250738585072009e-308, 2.2250738585072010e-308, 2.2250738585072012e-308) Reportar un error recibido 30.12.2010, 10.01.2011 fijado por el desarrollador. Puesto que PHP es un preprocesador es utilizado por la mayoría de los servidores, entonces cualquier red de usuario dentro de 10 días, fue capaz de cerrar cualquier host. Cómo escribir a los desarrolladores que el error sólo funciona en sistemas de 32 bits, pero si aumenta la precisión de la frontera, entonces creo que los sistemas de 64 bits, también, cuelgan (no verificado). La razón del pánico es clara: cualquier usuario, con cierto nivel de diligencia y conocimiento, tuvo la oportunidad de recortar la mayor parte de los recursos de información del planeta en diez días. No me gustaría - daría lugar a más ejemplos de tales números y tales errores. 10 La parte final De lo que antecede queda claro que la opinión de que el resultado de coma flotante no está más allá del error relativo al informar el mayor número es falsa. Los errores enumerados en el ítem 9 se agregan juntos. Tales errores como la reducción cero y peligrosa de cero pueden hacer que los errores de cálculo sean inaceptables. Atención particular en la programación de cálculos informáticos el programador debe ser pagado a los resultados cercanos a cero. Algunos expertos creen que el formato de los números representa una amenaza para la humanidad. Usted puede leer sobre él en el artículo IEEE754-tick amenaza a la humanidad Aunque muchos de los hechos en este artículo sobre-dramatizado, y posiblemente malinterpretado, pero el problema es computar correctamente reflejado filosóficamente. Im no una dramatización de los cálculos en el estándar IEEE754. Estándar de funcionamiento desde 1985 y entró plenamente en la norma IEEE754-2008, que amplió la precisión de los cálculos. Sin embargo, el problema de la fiabilidad de la computación de hoy es muy urgente, y las recomendaciones estándar de IEEE754-2008 y ISO no han resuelto este problema. Creo que en esta área necesitaba una idea innovadora que los desarrolladores estándar IEEE754-2008 desafortunadamente no poseen. Las ideas innovadoras vienen generalmente de. Las principales ideas innovadoras en nuestro mundo fueron hechas por aficionados (gente de ideas afines no por dinero). Un ejemplo llamativo de esta situación fue la invención del teléfono. Cuando un maestro de escuela Alexander Graham Bell (Alexander Graham Bell) presentó una patente para una invención del teléfono al presidente de la compañía de telecomunicaciones Western Union Company, que es propiedad de la conexión de cable transatlántico con una oferta para comprar su patente para el Invención del teléfono, no fue expulsado - no. El presidente de esa empresa ofreció considerar esta cuestión el consejo de expertos en el campo de la telegrafía, compuesto por especialistas y académicos en el campo de las telecomunicaciones. Los expertos dieron su opinión de que esta invención es inútil en el campo de las telecomunicaciones y es inútil. Algunos expertos incluso han escrito un informe que Tsirkachestvo y charlatanismo nbsp nbsp Alexander Graham Bell, junto con su suegro, decidió independientemente para promover su invención. Después de unos 10 años, el gigante de las telecomunicaciones Western Union Co. fue prácticamente eliminado negocio telefónico de la esfera de las tecnologías de telecomunicaciones. Hoy en día se puede ver en muchas ciudades de Rusia ventanas que dice Western Union, esta empresa que se dedica a la transferencia de dinero en todo el mundo, y una vez que ella era el gigante de las telecomunicaciones internacionales. Podemos concluir: opiniones de expertos en tecnologías innovadoras son inútiles Si usted piensa que desde la invención del teléfono (1877) en la mente de las personas que algo ha cambiado, youre mal. Si los científicos (que están inventando nuevos) y los profesionales (que saben utilizar el bien conocido) no pueden resolver el problema, necesitan innovación. Enlaces a nuevas ideas en el campo de la representación de números reales en el hardware: 1. Approksimetika 2. Si conoce otras ideas innovadoras en el campo de las representaciones de números reales, entonces estaremos encantados de obtener enlaces a estas fuentes. Yo sugeriría representar números reales como punto fijo. Para ver el rango completo de números Doble suficiente para tener una variable que consta de 1075 bits parte entera y 1075 bits de parte fraccional, es decir, alrededor de 270 bytes por variable. En este caso, todos los números se presentarán con la misma precisión absoluta. Puede trabajar con números en todo el rango del eje real, es decir, se hace posible resumir grandes números de números pequeños. Los números de pasos en el eje real son uniformes, es decir, el eje real es lineal. El tipo de datos será solo uno, es decir, no necesita el tipo completo, real y de otro tipo. Aquí el problema es la realización de registros de microprocesadores dimensión de 270 bytes, pero no es un problema para la tecnología moderna. Para escribir p.9 tuve que crear un programa que representa un número como una variable a un punto fijo, 1075.1075 bytes largos. Donde el número se puede representar como una cadena de caracteres ASCII, es decir, un símbolo equivale a un dígito. Sólo tenía que escribir todas las operaciones aritméticas con cadenas ASCII. Este programa es similar a un cálculo de papel. Puesto que el microprocesador de la capacidad matemática en él no se utiliza, ella dijo lentamente. ¿Por qué lo hice? No pude encontrar un programa que podría representar con precisión el número de formato IEEE754, en forma decimal. Tampoco encontré el programa (aunque ciertamente tienen lo que sin duda) donde se puede ingresar en la casilla 1075 de dígitos decimales significativos. Aquí, por ejemplo, sólo el valor decimal del número de dobles 7FEFFFFFFFFFFFFF: 17976931348623157081452742373170435679807056752584499659891747680315726078002853876058955 863276687817154045895351438246423432132688946418276846754670353751698604991057655128207624 549009038932894407586850845513394230458323690322294816580855933212334827479782620414472316 8738177180919299881250404026184124858368,0 Puede utilizar el nbsp v.1.0 IEEE754 para estudiar y evaluar los errores cuando se trabaja con números reales dados en el formato de IEEE754. Referencias: 1. Norma IEEE para aritmética binaria de punto flotante. Copyright 1985 por el Instituto de Ingenieros Eléctricos y Electrónicos, Inc 345 East 47th Street, Nueva York, NY 10017, EE. UU. Agradecimientos: Sitkarevu Grigory (sitkarevkomitex. ru, sinclair80gmail). Para ayuda en la creación de un artículo. Archivo de comentarios con comentarios nbsp Ver nbspnbsp (Envíenos sus comentarios sobre el e-mail: infosoftelectro. ru) Aplicación de espectros normalizados en la resolución de una desafiante Orphenadrine y Paracetamol mezcla binaria Técnicas inteligentes utilizando los espectros de división para la determinación simultánea de la mezcla binaria. Ventajas de los métodos propuestos sobre las técnicas espectrofotométricas convencionales. Resumen Los espectros normalizados tienen un gran poder en la resolución de la superposición espectral de Orphenadrine (ORP) y paracetamol (PAR), se utilizaron cuatro técnicas inteligentes que utilizaron los espectros normalizados, la modulación de amplitud (AM), la substracción de la relación de área simultánea (SARS), la espectrofotometría de derivadas simultáneas (S 1 DD) y la relación del método de adición estándar de punto H (RHPSAM). In AM, peak amplitude at 221.6xA0nm of the division spectra was measured for both ORP and PAR determination, while in SARS, concentration of ORP was determined using the area under the curve from 215xA0nm to 222xA0nm of the regenerated ORP zero order absorption spectra, in S 1 DD, concentration of ORP was determined using the peak amplitude at 224xA0nm of the first derivative ratio spectra. PAR concentration was determined directly at 288xA0nm in the division spectra obtained during the manipulation steps in the previous three methods. The last RHPSAM is a dual wavelength method in which two calibrations were plotted at 216xA0nm and 226xA0nm. RH point is the intersection of the two calibration lines, where ORP and PAR concentrations were directly determined from coordinates of RH point. The proposed methods were applied successfully for the determination of ORP and PAR in their dosage form. Graphical abstract Normalized spectra have a great power in resolving spectral overlap of challenging Orphenadrine and Paracetamol binary mixture, four smart techniques utilizing the normalized spectrum were used in this work, namely, amplitude modulation, simultaneous area ratio subtraction, simultaneous derivative spectrophotometry and ratio H-point standard addition method. Keywords Normalized spectra Binary mixture Amplitude modulation Simultaneous area ratio subtraction Simultaneous derivative ratio Ratio H-point standard addition method Corresponding author. Tel. 20 2 25353400 fax: 20 2 23628246.Decimal to Floating-Point Converter About the Decimal to Floating-Point Converter This is a decimal to binary floating-point converter. It will convert a decimal number to its nearest single-precision and double-precision IEEE 754 binary floating-point number, using round-half-to-even rounding (the default IEEE rounding mode). It is implemented with arbitrary-precision arithmetic, so its conversions are correctly rounded. It will convert both normal and subnormal numbers, and will convert numbers that overflow (to infinity) or underflow (to zero). The resulting floating-point number can be displayed in ten forms: in decimal, in binary, in normalized decimal scientific notation, in normalized binary scientific notation, as a normalized decimal times a power of two, as a decimal integer times a power of two, as a decimal integer times a power of ten, as a hexadecimal floating-point constant, in raw binary, and in raw hexadecimal. Each form represents the exact value of the floating-point number. Why Use This Converter This converter will show you why numbers in your computer programs, like 0.1, do not behave as you8217d expect. Inside the computer, most numbers with a decimal point can only be approximated another number, just a tiny bit away from the one you want, must stand in for it. For example, in single-precision floating-point, 0.1 becomes 0.100000001490116119384765625. If your program is printing 0.1, it is lying to you if it is printing 0.100000001, it8217s still lying, but at least it8217s telling you you really don8217t have 0.1. How to Use This Converter Input Enter a positive or negative number, either in standard (e. g. 134.45) or exponent (e. g. 1.3445e2) form. Indicate fractional values with a decimal point (lsquo. rsquo), and do not use commas. Essentially, you can enter what a computer program accepts as a floating-point literal, except without any suffix (like lsquofrsquo). Check the boxes for the IEEE precision you want choose Double . Single . or both. ( Double is the default.) Double means a 53-bit significand (less if subnormal) with an 11-bit exponent Single means a 24-bit significand (less if subnormal) with an 8-bit exponent. Check the boxes for any output format you want choose one or all ten. ( Decimal is the default.) Click lsquoConvertrsquo to convert. Click lsquoClearrsquo to reset the form and start from scratch. If you want to convert another number, just type over the original number and click lsquoConvertrsquo 8212 there is no need to click lsquoClearrsquo first. Output There are ten output forms to choose from: Decimal . Display the floating-point number in decimal. (Expand output box, if necessary, to see all digits.) Binary . Display the floating-point number in binary. (Expand output box, if necessary, to see all digits.) Normalized decimal scientific notation . Display the floating-point number in decimal, but compactly, using normalized scientific notation. (Expand output box, if necessary, to see all digits.) Normalized binary scientific notation . Display the floating-point number in binary, but compactly, using normalized binary scientific notation. Nota . subnormal numbers are shown normalized, with their actual exponent. Normalized decimal times a power of two . Display the floating-point number in a hybrid normalized scientific notation, as a normalized decimal number times a power of two. Decimal integer times a power of two . Display the floating-point number as a decimal integer times a power of two. (The binary representation of the decimal integer is the bit pattern of the floating-point representation, less trailing zeros.) This form is most interesting for negative exponents, since it represents the floating-point number as a dyadic fraction . Decimal integer times a power of ten . Display the floating-point number as a decimal integer times a power of ten. This form is most interesting for negative exponents, since it represents the floating-point number as a fraction. (Expand output box, if necessary, to see all digits.) Hexadecimal floating-point constant . Display the floating-point number as a hexadecimal floating-point constant. Nota . There are many ways to format hexadecimal floating-point constants, as you would see if, for example, you compared the output of Java, Visual C, gcc C, and Python programs. The differences across various languages are superficial though 8212 trailing zeros may or may not be shown, positive exponents may or may not have a plus sign, etc. This converter formats the constants without trailing zeros and without plus signs. Nota . Like many programming languages, this converter shows subnormal numbers unnormalized, with their exponents set to the minimum normal exponent. Nota . The last hexadecimal digit in a hexadecimal floating-point constant may have trailing binary 0s within this doesn8217t necessarily imply those bits exist in the selected IEEE format. Raw binary . Display the floating-point number in its raw IEEE format (sign bit followed by the exponent field followed by the significand field). Raw hexadecimal . Display the floating-point number in its raw IEEE format, equivalent to the raw binary format but expressed compactly in hexadecimal. (See here for more details on these output forms.) There are two output flags: Inexact . If checked, this shows that the conversion was inexact that is, it had to be rounded to an approximation of the input number. (The conversion is inexact when the decimal output does not match the decimal input, but this is a quicker way to tell.) Note . This converter flags overflow to infinity and underflow to zero as inexact. Subnormal . If checked, this shows that the number was too small, and converted with less than full precision (the actual precision is shown in parentheses). Implementation I wrote this converter from scratch 8212 it does not rely on native conversion functions like strtod() or strtof() or printf(). It is based on the big integer based algorithm I describe in my article ldquoCorrect Decimal To Floating-Point Using Big Integers rdquo. I8217ve implemented it using BCMath . Limits For practical reasons, Ive set an arbitrary (somewhat) limit on the length of the decimal input you8217ll get an error message if you hit it. This will filter inputs that would otherwise overflow to infinity or underflow to zero, but it will also prevent you from entering some ldquohardrdquo halfway rounding cases. (For the record though, this converter accepts all the hard examples I8217ve discussed on my site.) For all inputs that are accepted however, the output is correct (notwithstanding any bugs escaping my extensive testing). Suscribir


No comments:

Post a Comment