Altifigence Academy

3 / 20 · Concepto

Política de salida de punto fijo

Separa la escala de entrada, el redondeo negativo, la saturación y el comportamiento modular.

Los bits almacenan un entero; la escala aporta el significado

Representa x como un entero X y F bits fraccionarios, de modo que x=X/2^F. Usamos el mismo F para A y B. Su producto y su acumulador tienen 2F bits fraccionarios. Convertir la suma bruta final S a la escala de entrada requiere dividir por 2^F. Convierte una sola vez después de la reducción completa; redondear primero cada término puede descartar contribuciones que juntas serían significativas.

Para F=4, [1.5,−0.5] se almacena como [24,−8] y [0.25,2.0] como [4,32]. El producto escalar bruto es 24×4−8×32=−160. Su valor real es −160/256=−0.625 y su entero de salida para F=4 es −10.

Prueba explícitamente el redondeo negativo

Para S=−17 y F=4, el entero de salida exacto es −1.0625. Un desplazamiento aritmético a la derecha da −2; el truncamiento hacia cero da −1. El redondeo al más cercano con desempate al par también da −1. Por tanto, un desplazamiento aritmético no es intercambiable con todas las interpretaciones de «descartar la fracción». En los valores intermedios −24/16=−1.5 y −40/16=−2.5, el desempate al par elige −2 en ambos casos.

Nuestra conversión predeterminada redondea la suma completa al más cercano con desempate al par y después satura a la anchura de salida. Sobre la magnitud absoluta, calcula el cociente q y el resto r. Incrementa q cuando r supera la mitad del divisor o cuando es igual a la mitad y q es impar. Restaura después el signo original. En RTL, obtener el valor absoluto del número más negativo requiere un temporal más ancho; la referencia de Node usa BigInt.

Define el desbordamiento de salida

La salida con signo de ocho bits cubre −128..127. Un valor redondeado de 130 se satura a 127 o pasa a −126 de forma modular. Un valor de −130 se satura a −128 o pasa a 126 de forma modular. Cualquiera de las políticas puede ser intencionada, pero debe nombrarse y probarse.

Compara por separado el acumulador bruto y la salida convertida. Una suma bruta incorrecta apunta a la aritmética o a la planificación; una suma correcta con salida incorrecta apunta a la escala, al redondeo o a la saturación. Conserva casos límite calculados a mano para que la referencia y el RTL no puedan ocultar el mismo error de conversión.

Inténtalo tú

Calcula el resultado con desempate al par para F=4, S=−56 y la salida saturada de ocho bits para F=4, S=−2080.

Leer la explicación

−56/16=−3.5 se redondea al entero par −4. −2080/16=−130, que se satura a −128 después del redondeo.

Tu elección se aplica a este navegador. Puedes cambiarla en el pie de página.