5 / 24 · Conceito
Bits e unidades de ponto fixo
Multiplique 0.5 e −1.25 em F=4 e depois some o viés 0.25 em F=8. Quais são o código do acumulador e o valor real?
As aulas podem ser lidas gratuitamente. Inscreva-se para salvar o progresso.
Associe uma unidade ao inteiro
O ponto fixo representa um valor real usando um código inteiro e uma escala fixa. Especificamos oito bits totais, armazenamento com sinal em complemento de dois e quatro bits fracionários, F=4. Um código q representa q×2⁻⁴. As convenções de nomenclatura do formato Q podem divergir sobre contar o sinal como um bit inteiro, portanto escreva explicitamente a largura total, o uso de sinal e F. Os códigos −128 a 127 representam −8 a 7.9375.
O mesmo padrão de bits muda de significado com sua escala. O código 24 representa 1.5 em F=4, mas três em F=3. Somar códigos com unidades diferentes é errado mesmo com um somador largo. Alinhe as escalas primeiro e defina qualquer arredondamento e overflow introduzidos pelo alinhamento.
Exemplo resolvido
Codifique 1.5 como 24 e −0.75 como −12. O produto inteiro é −288. As larguras fracionárias se somam, portanto o produto tem F=8 e representa −288/256=−1.125. O produto completo de dois operandos com sinal de oito bits cabe em dezesseis bits, mas uma soma de muitos produtos precisa de um cálculo separado da largura do acumulador. Arredondar cada produto de volta a F=4 introduz um erro em cada termo. Nosso contrato preserva a escala do produto durante a acumulação e arredonda uma vez na saída.
Um viés real de 0.5 torna-se código 128 em F=8. Somá-lo produz −160, representando −0.625. Somar o código oito, que é o viés em F=4, usaria a unidade errada. Documente a escala do viés junto com seu código armazenado.
Ao ampliar um código negativo em complemento de dois, repita o bit de sinal. A representação de oito bits de −12 é 11110100; sua extensão de dezesseis bits é 1111111111110100. A extensão com zeros a transforma em 244 positivo. Declare os operandos e intermediários RTL com sinal e explicite suas larguras em vez de supor que um destino estreito corrija o dimensionamento da expressão.
Escalas de potência de dois tornam a relação de deslocamento fácil de inspecionar. A quantização afim geral usa outras escalas positivas e um ponto zero. Mantenha código, escala e valor representado juntos nas anotações do projeto para que a multiplicação, a acumulação e a conversão final permaneçam compreensíveis.
Experimente
Multiplique 0.5 e −1.25 em F=4 e depois some o viés 0.25 em F=8. Quais são o código do acumulador e o valor real?
Ler a explicação
Os códigos são oito e −20, produzindo o produto −160. O código do viés é 64. O acumulador −96 em F=8 representa −0.375.