Altifigence Academy

5 / 24 · Concepto

Bits y unidades de punto fijo

Multiplica 0.5 y −1.25 con F=4 y después añade el sesgo 0.25 con F=8. ¿Cuáles son el código del acumulador y el valor real?

Asocia una unidad al entero

El punto fijo representa un valor real mediante un código entero y una escala fija. Especificamos ocho bits totales, almacenamiento con signo en complemento a dos y cuatro bits fraccionarios, F=4. Un código q representa q×2⁻⁴. Las convenciones de nombres del formato Q pueden discrepar sobre si el signo cuenta como bit entero, así que escribe explícitamente la anchura total, la interpretación con signo y F. Los códigos de −128 a 127 representan de −8 a 7.9375.

El mismo patrón de bits cambia de significado con su escala. El código 24 representa 1.5 con F=4, pero tres con F=3. Sumar códigos de unidades diferentes es incorrecto incluso con un sumador ancho. Alinea primero las escalas y define cualquier redondeo y desbordamiento que introduzca esa alineación.

Ejemplo resuelto

Codifica 1.5 como 24 y −0.75 como −12. El producto entero es −288. Las anchuras fraccionarias se suman, así que el producto tiene F=8 y representa −288/256=−1.125. Dos operandos con signo de ocho bits tienen su producto completo en dieciséis bits, pero una suma de muchos productos necesita un cálculo independiente de la anchura del acumulador. Redondear cada producto a F=4 introduce un error en cada término. Nuestro contrato conserva la escala del producto durante la acumulación y redondea una sola vez en la salida.

Un sesgo real de 0.5 se convierte en el código 128 con F=8. Añadirlo da −160, que representa −0.625. Añadir el código ocho, que es el sesgo con F=4, usaría la unidad equivocada. Documenta la escala del sesgo junto con su código almacenado.

Al ampliar un código negativo en complemento a dos, replica el bit de signo. La representación de ocho bits de −12 es 11110100; su extensión de dieciséis bits es 1111111111110100. La extensión con ceros lo cambia al positivo 244. Declara los operandos RTL y los intermedios con signo y haz explícitas sus anchuras, en lugar de suponer que un destino estrecho corrige el dimensionamiento de las expresiones.

Las escalas de potencias de dos facilitan examinar la relación de desplazamiento. La cuantización afín general usa otras escalas positivas y un punto cero. Mantén juntos el código, la escala y el valor representado en tus notas de diseño para que la multiplicación, la acumulación y la conversión final sigan siendo comprensibles.

Inténtalo tú

Multiplica 0.5 y −1.25 con F=4 y después añade el sesgo 0.25 con F=8. ¿Cuáles son el código del acumulador y el valor real?

Leer la explicación

Los códigos son ocho y −20 y dan el producto −160. El código del sesgo es 64. El acumulador −96 con F=8 representa −0.375.

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