Aritmética de punto fijo


En informática , el punto fijo se refiere a un método de representar números fraccionarios (no enteros) almacenando un número fijo de dígitos de su parte fraccionaria. Las cantidades en dólares , por ejemplo, a menudo se almacenan con exactamente dos dígitos fraccionarios, que representan los centavos (1/100 de dólar). Más generalmente, el término puede referirse a representar valores fraccionarios como múltiplos enteros de alguna unidad pequeña fija, por ejemplo, una cantidad fraccionaria de horas como un múltiplo entero de intervalos de diez minutos. La representación de números de punto fijo a menudo se contrasta con la representación de punto flotante más complicada y exigente desde el punto de vista informático .

En la representación de punto fijo, la fracción a menudo se expresa en la misma base numérica que la parte entera, pero usando potencias negativas de la base b . Las variantes más comunes son el decimal (base 10) y el binario (base 2). Este último también se conoce comúnmente como escala binaria . Por lo tanto, si se almacenan n dígitos de fracciones, el valor siempre será un múltiplo entero de b - n . La representación de punto fijo también se puede utilizar para omitir los dígitos de orden inferior de los valores enteros, por ejemplo, cuando se representan valores en dólares grandes como múltiplos de $ 1000.

Cuando se muestran números decimales de coma fija para lectura humana, los dígitos de las fracciones generalmente se separan de los de la parte entera por un carácter de base (generalmente '.' En inglés, pero ',' o algún otro símbolo en muchos otros idiomas). Sin embargo, internamente no hay separación, y la distinción entre los dos grupos de dígitos está definida solo por los programas que manejan tales números.

La representación de punto fijo era la norma en las calculadoras mecánicas . Dado que la mayoría de los procesadores modernos tienen una unidad de punto flotante rápido (FPU), las representaciones de punto fijo ahora se utilizan solo en situaciones especiales, como en microprocesadores y microcontroladores integrados de bajo costo ; en aplicaciones que exigen alta velocidad y / o bajo consumo de energía y / o área de chip pequeña , como procesamiento de imágenes , video y señales digitales ; o cuando su uso sea más natural para el problema. Ejemplos de estos últimos son la contabilidad.de cantidades en dólares, cuando las fracciones de centavos deben redondearse a centavos enteros en formas estrictamente prescritas; y la evaluación de funciones por búsqueda de tablas .

Una representación de punto fijo de un número fraccionario es esencialmente un número entero que se multiplica implícitamente por un factor de escala fijo. Por ejemplo, el valor 1,23 se puede almacenar en una variable como el valor entero 1230 con un factor de escala implícito de 1/1000 (lo que significa que se supone implícitamente que los últimos 3 dígitos decimales son una fracción decimal), y el valor 1230 000 puede representarse como 1230 con un factor de escala implícito de 1000 (con "menos 3" dígitos de fracción decimal implícita, es decir, con 3 dígitos cero implícitos a la derecha). Esta representación permite que las unidades aritméticas de números enteros estándar realicen cálculos de números racionales .

Los valores negativos generalmente se representan en formato binario de punto fijo como un entero con signo en la representación del complemento a dos con un factor de escala implícito como el anterior. El signo del valor siempre estará indicado por el primer bit almacenado (1 = negativo, 0 = no negativo), incluso si el número de bits de fracción es mayor o igual al número total de bits. Por ejemplo, el entero binario de 8 bits con signo (11110101) 2 = −11, tomado con -3, +5 y +12 bits de fracción implícitos, representaría los valores −11/2 −3 = −88, −11 / 2 5 = −0. 343 75 y −11/2 12 = −0. 002 685 546 875 , respectivamente.