Altifigence Academy

3 / 20 · Concetto

Politica di uscita a virgola fissa

Separa scala di ingresso, arrotondamento dei negativi, saturazione e ritorno modulare.

I bit memorizzano un intero; la scala gli dà significato

Rappresenta x mediante un intero X e F bit frazionari, così x=X/2^F. Usiamo lo stesso F per A e B. Il loro prodotto e l'accumulatore hanno 2F bit frazionari. Convertire la somma grezza finale S alla scala di ingresso richiede la divisione per 2^F. Converti una sola volta dopo l'intera riduzione; arrotondare prima ogni termine può scartare contributi che diventerebbero significativi insieme.

Per F=4, [1.5,−0.5] viene memorizzato come [24,−8] e [0.25,2.0] come [4,32]. Il prodotto scalare grezzo è 24×4−8×32=−160. Il suo valore reale è −160/256=−0.625 e il suo intero di uscita con F=4 è −10.

Verifica esplicitamente l'arrotondamento dei negativi

Per S=−17 e F=4, l'intero di uscita esatto è −1.0625. Uno scorrimento aritmetico a destra produce −2; il troncamento verso zero produce −1. Anche l'arrotondamento al più vicino con parità in caso di equidistanza produce −1. Uno scorrimento aritmetico non è quindi intercambiabile con ogni interpretazione di «scartare la frazione». Ai valori intermedi −24/16=−1.5 e −40/16=−2.5, l'arrotondamento al pari sceglie −2 in entrambi i casi.

La nostra conversione predefinita arrotonda la somma completa al più vicino, scegliendo il pari in caso di equidistanza, poi satura alla larghezza di uscita. Sul valore assoluto, calcola quoziente q e resto r. Incrementa q quando r supera metà divisore, oppure quando è uguale a metà e q è dispari. Ripristina poi il segno originale. In RTL, il valore assoluto del numero più negativo richiede un temporaneo più largo; il riferimento Node usa BigInt.

Definisci l'overflow all'uscita

L'uscita con segno a otto bit copre −128..127. Un valore arrotondato di 130 satura a 127 oppure ritorna modularmente a −126. Un valore di −130 satura a −128 oppure ritorna modularmente a 126. Entrambe le politiche possono essere intenzionali, ma devono essere nominate e verificate.

Confronta separatamente l'accumulatore grezzo e l'uscita convertita. Una somma grezza errata indica problemi di aritmetica o pianificazione; una somma corretta con uscita errata indica problemi di scala, arrotondamento o saturazione. Conserva casi limite calcolati a mano affinché riferimento e RTL non possano nascondere entrambi lo stesso errore di conversione.

Prova tu

Trova il risultato arrotondato al pari per F=4, S=−56 e l'uscita saturata a otto bit per F=4, S=−2080.

Leggi la spiegazione

−56/16=−3.5 si arrotonda all'intero pari −4. −2080/16=−130, che satura a −128 dopo l'arrotondamento.

La scelta vale per questo browser. Puoi modificarla in qualsiasi momento dal piè di pagina.