Altifigence Academy

3 / 20 · Konzept

Ausgaberegeln für Festkommawerte

Trennen Sie Eingabeskalierung, Rundung negativer Werte, Sättigung und Umlauf.

Bits speichern eine Ganzzahl; die Skalierung gibt ihr Bedeutung

Stellen Sie x durch eine Ganzzahl X und F Nachkommabits dar, sodass x=X/2^F gilt. Für A und B verwenden wir dasselbe F. Ihr Produkt und der Akkumulator besitzen 2F Nachkommabits. Die Rückwandlung der endgültigen Rohsumme S auf die Eingabeskalierung erfordert eine Division durch 2^F. Wandeln Sie erst nach der vollständigen Reduktion einmal um; eine vorherige Rundung jedes Terms kann Beiträge verwerfen, die gemeinsam bedeutsam würden.

Bei F=4 wird [1.5,−0.5] als [24,−8] und [0.25,2.0] als [4,32] gespeichert. Das rohe Skalarprodukt ist 24×4−8×32=−160. Sein reeller Wert ist −160/256=−0.625 und seine Ausgabe-Ganzzahl bei F=4 ist −10.

Die Rundung negativer Werte ausdrücklich testen

Für S=−17 und F=4 beträgt die exakte Ausgabe-Ganzzahl −1.0625. Eine arithmetische Rechtsverschiebung ergibt −2; Abschneiden gegen Null ergibt −1. Rundung zur nächsten Ganzzahl mit geraden Werten bei Gleichstand ergibt ebenfalls −1. Eine arithmetische Verschiebung ist daher nicht mit jeder Interpretation von „Nachkommastellen verwerfen“ austauschbar. Bei den Halbwerten −24/16=−1.5 und −40/16=−2.5 wählt die Rundung zum geraden Wert in beiden Fällen −2.

Unsere Standardumwandlung rundet die vollständige Summe zum nächsten Wert, bei Gleichstand zum geraden, und sättigt anschließend auf die Ausgabebreite. Berechnen Sie für den Absolutbetrag Quotient q und Rest r. Erhöhen Sie q, wenn r größer als der halbe Divisor ist oder ihm entspricht und q ungerade ist. Stellen Sie danach das ursprüngliche Vorzeichen wieder her. In RTL benötigt der Absolutbetrag der negativsten Zahl einen breiteren Zwischenwert; die Node-Referenz verwendet BigInt.

Überlauf am Ausgang definieren

Eine vorzeichenbehaftete Acht-Bit-Ausgabe deckt −128..127 ab. Ein gerundeter Wert 130 sättigt zu 127 oder läuft zu −126 um. Ein Wert −130 sättigt zu −128 oder läuft zu 126 um. Beide Regeln können beabsichtigt sein, müssen aber benannt und getestet werden.

Vergleichen Sie den rohen Akkumulator und die umgewandelte Ausgabe getrennt. Eine falsche Rohsumme deutet auf Arithmetik oder Ablaufplanung; eine korrekte Summe mit falscher Ausgabe auf Skalierung, Rundung oder Sättigung. Bewahren Sie von Hand berechnete Grenzfälle auf, damit Referenz und RTL nicht gemeinsam denselben Umwandlungsfehler verbergen.

Selbst ausprobieren

Bestimmen Sie das zum geraden Wert gerundete Ergebnis für F=4, S=−56 und die gesättigte Acht-Bit-Ausgabe für F=4, S=−2080.

Erklärung lesen

−56/16=−3.5 wird zur geraden Ganzzahl −4 gerundet. −2080/16=−130 sättigt nach der Rundung zu −128.

Deine Auswahl gilt für diesen Browser. Du kannst sie jederzeit in der Fußzeile ändern.