Aritmética de saturación


La aritmética de saturación es una versión de la aritmética en la que todas las operaciones, como la suma y la multiplicación, están limitadas a un rango fijo entre un valor mínimo y máximo.

Si el resultado de una operación es mayor que el máximo, se fija (" abrazadera ") al máximo; si está por debajo del mínimo, se sujeta al mínimo. El nombre proviene de cómo el valor se "satura" una vez que alcanza los valores extremos; más sumas a un máximo o restas de un mínimo no cambiarán el resultado.

Por ejemplo, si el rango válido de valores es de −100 a 100, las siguientes operaciones aritméticas de saturación producen los siguientes valores:

Como se puede ver en estos ejemplos, las propiedades familiares como la asociatividad y la distributividad pueden fallar en la aritmética de saturación. [1] Esto hace que sea desagradable tratarlo en matemáticas abstractas, pero tiene un papel importante que desempeñar en hardware digital y algoritmos donde los valores tienen rangos máximos y mínimos representables.

Por lo general, los microprocesadores de uso general no implementan operaciones aritméticas de enteros mediante aritmética de saturación; en su lugar, utilizan la aritmética modular más fácil de implementar , en la que los valores que exceden el valor máximo " envuelven " al valor mínimo, como las horas en un reloj que pasa de 12 a 1. En hardware, aritmética modular con un mínimo de cero y un máximo de r n − 1, donde r es la base , se puede implementar simplemente descartando todos menos los n dígitos más bajos. Para el hardware binario, que es la gran mayoría del hardware moderno, la raíz es 2 y los dígitos son bits.

Sin embargo, aunque más difícil de implementar, la aritmética de saturación tiene numerosas ventajas prácticas. El resultado es lo más numéricamente cercano posible a la respuesta verdadera; para la aritmética binaria con signo de 8 bits, cuando la respuesta correcta es 130, es considerablemente menos sorprendente obtener una respuesta de 127 de la aritmética de saturación que obtener una respuesta de −126 de la aritmética modular. Del mismo modo, para la aritmética binaria sin signo de 8 bits, cuando la respuesta correcta es 258, es menos sorprendente obtener una respuesta de 255 de la aritmética de saturación que obtener una respuesta de 2 de la aritmética modular.