Altifigence Academy

3 / 20 · Conceito

Política de saída em ponto fixo

Separe escala de entrada, arredondamento de negativos, saturação e comportamento modular.

Os bits armazenam um inteiro; a escala fornece significado

Represente x como um inteiro X e F bits fracionários, de modo que x=X/2^F. Usamos o mesmo F para A e B. Seu produto e acumulador têm 2F bits fracionários. Converter a soma bruta final S de volta à escala de entrada exige divisão por 2^F. Converta uma vez após a redução completa; arredondar cada termo primeiro pode descartar contribuições que se tornariam significativas em conjunto.

Para F=4, [1.5,−0.5] é armazenado como [24,−8] e [0.25,2.0] como [4,32]. O produto escalar bruto é 24×4−8×32=−160. Seu valor real é −160/256=−0.625, e seu inteiro de saída em F=4 é −10.

Teste explicitamente o arredondamento de negativos

Para S=−17 e F=4, o inteiro exato da saída é −1.0625. Um deslocamento aritmético à direita produz −2; truncar em direção a zero produz −1. Arredondar para o mais próximo, com empates para o par, também produz −1. Portanto, um deslocamento aritmético não é intercambiável com qualquer interpretação de “descartar a fração”. Nos valores de empate −24/16=−1.5 e −40/16=−2.5, o desempate para o par seleciona −2 em ambos os casos.

Nossa conversão padrão arredonda a soma completa para o mais próximo, com empates para o par, e depois satura na largura de saída. Sobre o módulo, calcule o quociente q e o resto r. Incremente q quando r exceder metade do divisor ou quando for igual à metade e q for ímpar. Restaure o sinal original depois. Em RTL, obter o módulo do número mais negativo exige uma variável temporária mais larga; a referência em Node usa BigInt.

Defina o overflow na saída

A saída com sinal de oito bits cobre −128..127. Um valor arredondado de 130 satura em 127 ou, com comportamento modular, torna-se −126. Um valor de −130 satura em −128 ou, com comportamento modular, torna-se 126. Qualquer uma das políticas pode ser intencional, mas deve ser nomeada e testada.

Compare separadamente o acumulador bruto e a saída convertida. Uma soma bruta errada aponta para aritmética ou escalonamento; uma soma correta com saída errada aponta para escala, arredondamento ou saturação. Preserve casos de limite calculados manualmente para que a referência e o RTL não possam ocultar juntos o mesmo erro de conversão.

Experimente

Encontre o resultado com empates para o par para F=4, S=−56 e a saída saturada de oito bits para F=4, S=−2080.

Ler a explicação

−56/16=−3.5 arredonda para o inteiro par −4. −2080/16=−130, que satura em −128 após o arredondamento.

Sua escolha vale neste navegador. Altere-a a qualquer momento no rodapé.