Números de punto flotante números reales. pi 3,14159265. e 2,71828. La notación científica: tiene un solo dígito a la izquierda del punto decimal. Un número en notación científica sin 0s principales se denomina Número Normalizado: 1,0 veces 10 -8 no en forma normalizada: 0.1 Tiempos 10 -7 o 10,0 veces 10 -9 también puede representar números binarios en notación científica: 1.0 Tiempos 2 -3 la aritmética computacional que soporta tales números se llama punto flotante. La forma es 1.xxxx133 Tiempos 2 yy133 Utilizando la notación científica normalizada simplifica el intercambio de datos que incluye numbersSimplifies de punto flotante de los algoritmos de cálculo para saber que los números siempre serán en este formIncreases la exactitud de los números que se pueden almacenar en una palabra , ya que cada líder de 0 innecesaria se sustituye por otro dígito significativo a la derecha de la pointRepresentation decimal de los números en coma flotante -1 S M veces Tiempos 2 E 177 10 -308. 10 308 Estos formatos son llamados. IEEE 754 de coma flotante estándar Desde la mantisa es siempre 1.xxxxxxxxx en forma normalizada, sin necesidad de representar la principal 1. Así que, efectivamente: precisión simple: mantisa 1 bit 23 bitsDouble Precisión: mantisa 1 bit 52 bitsSince cero (0.0) no tiene que conduce 1, para distinguirlo de los demás, se le da el reservados bitpattern todos 0s para el exponente de modo que el hardware suele adjuntar un líder de 1 a ella. Por lo tanto: Otros números -1 S veces (1) Mantisa Tiempos 2 E Si numeramos los bits de la mantisa de izquierda a derecha m1, m2, m3. mantisa m1 veces 2 -1 -2 m2 veces 2 veces m3 2 -3. exponentes negativos podrían plantear un problema en las comparaciones. Por ejemplo (con complemento a dos): 3.10.1.The Fundamentos de punto flotante se pone alrededor de las limitaciones de punto fijo mediante el uso de un formato similar a la notación científica. Un número notación científica, como usted probablemente sabe, consiste en una mantisa (3.52 en el ejemplo anterior) una raíz (siempre 10), y un exponente (3 en el ejemplo anterior). Por lo tanto, el formato general de un valor notación científica es: mantisa x radix exponente la forma normalizada siempre tiene una mantisa mayor que o igual a 1,0, y de menos de 10,0. Podemos desnormalizar el valor y lo expresan de muchas otras maneras, como por ejemplo 35,2 x 10 x 2. 10 o 0.00325 0. Para cada posición que cambiamos los dígitos de la mantisa en relación con el punto decimal, que aumentan o disminuyen el valor de la mantisa por un factor de 10. para compensar esto, simplemente aumentar o disminuir el exponente de 1. desnormalización es necesario cuando la adición de los valores de notación científica: Ajuste de la mantisa y exponente también es a veces necesario para normalizar los resultados. Por ejemplo, 9,9 x 10 x 10 2 9.9 2 es 19,8 x 10 2. que deben normalizarse a 1,98 x 10 3. Un sistema flotante binario almacena una mantisa binario con signo y un exponente binario con signo, y por lo general utiliza un radix de 2. el uso de un radix de 2 (o cualquier potencia de 2) nos permite normalizar y desnormalizar desplazando los dígitos binarios en la mantisa y ajustando el exponente número entero en el radix de 2. (desplazamiento de dígitos binarios en los bits de mantisa n a la izquierda o multiplica o divide la derecha la mantisa por 2 n.) 00010 2 x 2 x 3 01000 2 2 1. los formatos estándar de punto flotante son definidos por la sociedad IEEE. Los formatos IEEE son un poco más complejo que hay que entender el punto flotante, en general, por lo que se iniciará con un ejemplo más simple aquí. 3.10.2.A simple formato de punto flotante Supongamos que un formato de coma flotante de 32 bits tiene una de 24 bits complemento a dos mantisa, una de dos en dos de 8 bits se complementan exponente, y una raíz de 2. La estructura general es: mantisa exponente x 2 Donde mantisa es de 24 bits complemento a dos enteros, y el exponente es un dos en dos de 8 bits se complementan entero. El formato binario es el siguiente: Formato Table3.3.Floating Point ¿Cuál es el valor del siguiente número de la mantisa es 000000000000000000010010, o (2 16) 18. El exponente es 11111100 - (00000011 1) -00000100 -4. Por lo tanto, 18 x 2 -4 El valor es ¿Cuál es el mayor valor positivo podemos representar en este sistema el mayor valor positivo consistirá en la mantisa positiva más grande y el mayor exponente positivo. El mayor mantisa es 011111111111111111111111, que en complemento a dos es 2 23 -1 (8.388.607). El mayor exponente es 01111111, que en complemento a dos es 2 7 -1 (127). Por lo tanto, el valor positivo más grande es 8,388,607 x 1.42 x 2 127 10 45. ¿Cuál es el segundo mayor valor positivo ¿Cuál es la diferencia entre el mayor y el segundo mayor Cuál es el valor positivo más pequeño Para encontrar el valor positivo más pequeño en forma mantisa x exponente radix. elegimos la mantisa positivo más pequeño, y el exponente negativo más pequeño (el exponente negativo con la mayor magnitud). Desde la mantisa es un número entero, el valor positivo más pequeño posible es 1. Dado que el exponente es una de dos en dos de 8 bits complementan valor, el exponente negativo más pequeño es 10000000 2. de -2 7 -128. De ahí el valor positivo más pequeño es de 1 x 2 -128. o 2,93873587706 x 10 -39. ¿Cuál es el valor positivo segundo más pequeño ¿Cuál es la diferencia entre el más pequeño y el segundo más pequeño Representa a -2.75 en este punto flotante System. Convert el número de punto fijo binario utilizando los métodos descritos en las secciones anteriores: Multiplicar por radix exponente igual a 1: Shift el punto binario para hacer que la mantisa de un número entero: - (1011 2) moviendo el punto binario dos lugares a la derecha, se multiplica la mantisa por 2 2. por lo tanto, hay que dividir (base exponente) por el mismo factor: Convertir la mantisa y exponente en los formatos especificados (complemento a dos en este caso): mantisa: - (000000000000000000001011) 111111111111111111110101 Exponente: -2 10 11111110 representación binaria 11111111111111111111010111111110 ¿Cuántos valores diferentes puede representar este sistema 3.10.3.Overflow y transgresión por debajo de desbordamiento se produce cuando el resultado de una operación de punto flotante es mayor que el valor positivo más grande o más pequeño que el valor negativo más pequeño. En otras palabras, la magnitud es demasiado grande para representar. Subdesbordamiento se produce cuando el resultado de una operación de punto flotante es menor que el valor positivo más pequeño o más grande que el valor negativo más grande. En otras palabras, la magnitud es demasiado pequeña para representar. El ejemplo formato de 32 bits anterior no puede representar valores mayores de aproximadamente 10 45 o menor que aproximadamente 10 -39. Una técnica para evitar el desbordamiento y subdesbordamiento es a las operaciones alternativas que aumentan y disminuyen los resultados intermedios. En lugar de hacer todas las multiplicaciones primeros, lo que podría causar desbordamiento, o todas las divisiones primera, lo que podría causar desbordamiento, podríamos multiplicaciones y divisiones alternativas a moderar los resultados a lo largo del camino. Técnicas como éstas a menudo se deben utilizar en los cálculos científicos complejos. 3.10.4.Cost de punto flotante Todo tiene un costo. El mayor alcance y capacidad de representar los números no enteros no es una excepción. Precisión Sólo hay 2 32 32 patrones de 0s y 1s. Por lo tanto, hay sólo 2 de 32 números únicos que podemos representar en 32 bits, independientemente del formato. Entonces, ¿cómo es que podemos representar los números hasta el 10 45. Obviamente, debemos estar sacrificando algo intermedio. ¿Qué punto flotante hace por nosotros se extiende el número limitado de patrones binarios que tenemos disponibles para cubrir un rango más amplio de números. Cuanto más grande es el exponente, cuanto mayor sea la distancia entre los números consecutivos que podemos representar con precisión. Cerca 0, podemos representar muchos números en un rango pequeño. Lejos de cero, habrá toda una serie de números enteros que no se pueden representar. La precisión de un valor de coma flotante de 32 bits es menor que la precisión de un número entero de 32 bits. Mediante el uso de 8 bits para el exponente, sacrificamos esos 8 bits de precisión. Por lo tanto, nuestro formato de ejemplo tiene la misma precisión que un sistema entero con signo de 24 bits. Aritmética rendimiento en coma flotante es varias veces más lento que en números enteros. Esta es una propiedad inherente del formato. Considere el proceso de agregar dos valores notación científica. Igualar la exponentes Añadir las mantisas normalizar el resultado Cada una de estas operaciones toman aproximadamente la misma cantidad de tiempo en un ordenador como una sola adición entero. Desde el punto flotante se almacena como la notación científica, podemos esperar flotante Además punto a tener alrededor de tres veces más largo que además entero. En realidad, un ordenador personal normal tarda aproximadamente 2,5 veces más tiempo para ejecutar una instrucción aritmética de punto flotante como lo hace para hacer la misma instrucción número entero. Tenga en cuenta que esto sólo se aplica a las operaciones que se pueden llevar a cabo utilizando ya sea una sola instrucción número entero o una sola instrucción de coma flotante. Por ejemplo, supongamos que un programa se ejecuta en un equipo de 32 bits, y no hay manera de representar los datos dentro del rango de un entero de 32 bits. En este caso, será necesario procesar valores enteros de más de 32 bits múltiples instrucciones enteras, y la ventaja de la velocidad de los enteros no es aplicable. También es posible en algunos sistemas puede ocurrir al mismo tiempo que las operaciones de punto flotante y enteros, y por lo tanto utilizando el hardware de punto flotante podría resultar en un mejor rendimiento que la realización de operaciones de números enteros adicionales mientras que la unidad de coma flotante se encuentra inactivo. Este es el caso con la representación gráfica que se produce usando coma flotante de la unidad de procesamiento de gráficos (GPU) en lugar de la CPU. No tendría sentido para mover los cálculos de renderizado a la CPU con el fin de utilizar números enteros, ya que esto sólo aumentaría la carga de trabajo para la CPU y permitir que el poder de la GPU para ir a perder. Si el hardware ha flotante punto de apoyo integrado, a continuación, las operaciones comunes como la suma de punto flotante, resta, etc., pueden ser cada uno manejado por una sola instrucción. Si el hardware tampoco tienen una unidad de coma flotante (común en los procesadores integrados), operaciones de punto flotante debe ser manejado por rutinas de software. Por lo tanto, la adición de dos valores de coma flotante requerirá decenas de instrucciones para completar en lugar de sólo uno. Estos serán cientos de veces más lento que los números enteros, y se consumen una gran parte de la memoria de programa disponible. La mayoría de los algoritmos pueden ser implementados utilizando números enteros con un poco de pensamiento. El uso de punto flotante es a menudo el resultado de pura pereza. No uso punto justo porque su intuitiva flotante. Más consumo de energía. CPUs a alcanzar su máximo consumo de energía al hacer cálculos de punto flotante intensivos. Esto no suele ser perceptible en una PC de escritorio, pero puede convertirse en un problema en grandes redes que consisten en cientos de ordenadores, ya que la red de energía están unidos para no estar diseñado para proveer a su consumo máximo. También puede ser un problema cuando se ejecuta en una computadora portátil de la batería mientras se hace cálculos intensivos. Duración de la batería mientras se hace cálculos de punto flotante intensivos podría ser una pequeña fracción de lo que es durante la lectura de correo electrónico, navegar por la web, o editar un documento en OpenOffice. Float de conversión decimal Procedimiento La conversión Las reglas para la conversión de un número en coma flotante en decimales se simplemente para revertir del punto decimal a la conversión de coma flotante: Si el número original es en hexadecimal, convertirlo a binario. Separar en los campos signo, exponente y mantisa. Se extrae la mantisa del campo mantisa, y restaurar el líder de uno. También puede omitir los ceros a la derecha. Extraer el exponente del terreno de exponente, y restar el sesgo de recuperar el exponente real de dos. Como antes, el sesgo es 2 k minus1 menos 1, donde k es el número de bits en el campo exponente, dando 3 para el formato de 8 bits y 127 para el 32-bit. De-normalizar el número: mover el punto binario por lo que el exponente es 0, y el valor del número se mantiene sin cambios. Convierte el valor binario a decimal. Esto se realiza al igual que con los números enteros binarios, pero los valores lugar correcto del punto binario son fracciones. Ajuste el signo del número decimal de acuerdo con el bit de signo del número en coma flotante inicial: que sea negativo para 1 positivo de la licencia de 0. Si el exponente binario es muy grande o pequeño, puede convertir la mantisa directamente a diez sin de - normalizadora. A continuación, utilice una calculadora para elevar dos para el exponente, y realizar la multiplicación. Esto le dará una respuesta aproximada, pero es suficiente en la mayoría de los casos. Ejemplos usando el procedimiento de conversión de convertir el número en coma flotante e7 de 8 bits (en hexadecimal) a decimal. Convertir: e7 16 11100111 2. Seprate: 1 110 0111 Mantisa: 1.0111 Exponente: 110 2 6 10 6 menos 3 3. de considerarse algo normal: 1,0111 2 veces 2 3 1011.1 Convert: decimal en coma flotante convertidor Sobre el decimal a Punto Flotante-Converter Este es un valor decimal en Conversor de punto flotante binario. Será convertir un número decimal en su número binario de coma flotante de precisión simple cercano y doble precisión IEEE 754, el uso de ida y media-incluso redondeo (el modo de redondeo por defecto IEEE). Se lleva a cabo con precisión arbitraria, por lo que sus conversiones se han redondeado correctamente. Se convertir números normales y subnormales, y convertirá números que rebose (a infinito) o por defecto (a cero). El número de coma flotante resultante puede ser representada en diez formas: en decimal, en binario, en notación decimal científico normalizado, en notación científica binaria normalizada, como un normalizadas veces decimales una potencia de dos, como un decimal veces enteros una potencia de dos , como un decimal veces enteros una potencia de diez, como un hexadecimal constante de coma flotante, en binario y en hexadecimal prima. Cada forma representa el valor exacto del número de coma flotante. ¿Por qué utilizar este convertidor Este convertidor le mostrará qué números de sus programas informáticos, como 0,1, no se comportan como you8217d esperan. Dentro de la computadora, la mayoría de los números con un punto decimal sólo pueden ser aproximadas otro número, sólo un poco lejos de la que usted desea, debe obstaculizar por ello. Por ejemplo, en precisión simple de punto flotante, se convierte en 0,1 ,100000001490116119384765625. Si el programa está imprimiendo 0.1, que está mintiendo a usted si está imprimiendo 0,100000001, it8217s sigue mintiendo, pero al menos it8217s que le dice que realmente tienen don8217t 0.1. Cómo usar esta entrada del convertidor Introduzca un número positivo o negativo, ya sea en la norma (por ejemplo 134.45) o el exponente forma (por ejemplo, 1.3445e2). Indicar los valores fraccionarios con un punto decimal (lsquo. rsquo), y no utilice comas. En esencia, se puede introducir lo que un programa de ordenador acepta como un literal de coma flotante, excepto sin ningún sufijo (como lsquofrsquo). Marque las casillas para la precisión IEEE usted quiere elija doble. soltero . o ambos. (Doble es el valor predeterminado.) Significa un doble significand 53 bits (menos si debajo de lo normal) con una sola exponente de 11 bits significa una mantisa de 24 bits (menos si debajo de lo normal) con un exponente de 8 bits. Marque las casillas para cualquier formato de salida que desea elegir una o todas las diez. (Decimal es el valor predeterminado.) Haga clic en lsquoConvertrsquo convertir. Haga clic lsquoClearrsquo para restablecer la forma y empezar de cero. Si desea convertir otro número, sólo tiene que escribir el número original y haga clic lsquoConvertrsquo 8212 no hay necesidad de hacer clic lsquoClearrsquo primero. Salida Hay diez formas de salida para elegir: Decimal. Visualizar el número de coma flotante en decimal. (Ampliar Unidad de salida, si es necesario, para ver todos los dígitos.) Binario. Visualizar el número de coma flotante en binario. (Ampliar Unidad de salida, si es necesario, para ver todos los dígitos.) Notación científica decimal normalizada. Visualizar el número de coma flotante en decimal, pero de forma compacta, usando la notación científica normalizada. (Ampliar Unidad de salida, si es necesario, para ver todos los dígitos.) Notación científica binaria normalizada. Visualizar el número de coma flotante en binario, pero de forma compacta, usando la notación científica binaria normalizada. Nota . números anormales se muestran normalizada, con su exponente real. tiempos decimales normalizados una potencia de dos. Visualizar el número de coma flotante en una notación científica normalizada híbrido, como un número multiplicado por normalizados decimales una potencia de dos. tiempos enteros decimales una potencia de dos. Visualizar el número de coma flotante como un entero decimal veces una potencia de dos. (La representación binaria del número entero decimal es el patrón de bits de la representación de coma flotante, ceros menos que se arrastran.) Esta forma es más interesante para exponentes negativos, ya que representa el número de coma flotante como una fracción diádica. tiempos enteros decimales una potencia de diez. Visualizar el número de coma flotante como un entero decimal veces una potencia de diez. Esta forma es más interesante para exponentes negativos, ya que representa el número de coma flotante como una fracción. (Ampliar Unidad de salida, si es necesario, para ver todos los dígitos.) Hexadecimal constante de coma flotante. Visualizar el número de coma flotante como una constante de coma flotante hexadecimal. Nota . Hay muchas maneras de dar formato hexadecimal constantes de punto flotante, como es de ver si, por ejemplo, usted comparó la salida de Java, Visual C, C gcc, y los programas en Python. Las diferencias entre los distintos idiomas son superficiales, aunque 8212 ceros finales pueden o no aparecen, exponentes positivos pueden o no tienen un signo más, etc. Este convertidor de formatos de las constantes y sin ceros a la derecha y sin signos más. Nota . Al igual que muchos lenguajes de programación, este convertidor muestra números anormales sin normalizar, con sus exponentes establecen en el exponente mínimo normal. Nota . El último dígito hexadecimal en un punto flotante constante hexadecimal puede tener arrastra 0s binarios dentro de este doesn8217t implican necesariamente existen esos bits en el formato IEEE seleccionado. binario. Visualizar el número de coma flotante IEEE en su formato en bruto (bit de signo seguido por el campo exponente seguido por el campo significand). hexadecimal prima. Visualizar el número de coma flotante IEEE en su formato en bruto, lo que equivale al formato binario, pero expresado de forma compacta en hexadecimal. (Vea aquí para más detalles sobre estas formas de salida.) Hay dos banderas de salida: inexacto. Si está marcada, esto demuestra que la conversión era inexacta, es decir, que tuvo que ser redondeado a una aproximación del número de entrada. (La conversión es inexacta cuando la salida decimal no coincide con la entrada decimal, pero esta es una manera más rápida que contar.) Nota. Este convertidor de banderas de desbordamiento al infinito y flujo inferior a cero como sea inexacta. Inferior a la normal. Si está marcada, esto demuestra que el número era demasiado pequeño, y se convierte con menos precisión completa (la precisión real se muestra entre paréntesis). Implementación de escribir este convertidor de 8212 a partir de cero que no se basa en funciones de conversión de nativos como strtod () o strtof () o printf (). Se basa en la gran algoritmo basado número entero que describo en mi artículo ldquoCorrect decimales en coma flotante Uso de enteros grandes rdquo. I8217ve ejecutado utilizando BCMath. Límites por razones prácticas, he establecen un límite arbitrario (un poco) en la longitud de la entrada decimal you8217ll un mensaje de error si se golpea. Esto filtra los insumos que de otra manera desbordamiento al infinito o por defecto a cero, sino que también le impida que se incorpore alguna ldquohardrdquo mitad de los casos de redondeo. (Para el registro, sin embargo, este convertidor acepta todos los ejemplos duros I8217ve discuten en mi sitio.) Para todos los insumos que son aceptadas sin embargo, la salida es correcta (no obstante los errores que escapan a mi extensas pruebas).IEEE de punto flotante Representación S representa la bit de signo, los X s son los bits de exponente, y la M s son los bits de la mantisa. Tenga en cuenta que el bit más a la izquierda se asume en real4 y formatos real8, pero está presente como 1 en el byte 3 del formato Real10. Para cambiar el punto binario correctamente, unbias primer exponente y luego mueve el punto binario a la derecha oa la izquierda el número apropiado de bits. Los siguientes son algunos ejemplos en formato real4: En el siguiente ejemplo, el bit de signo es cero, y el exponente almacenado es de 128, 100 o 0000 0 en binario, que es 127 más 1. La mantisa es almacenada (1) 000 0000 . 0000 0000, que tiene un líder y 1 punto binaria implícita, por lo que la mantisa real es uno.
No comments:
Post a Comment