contente
Multiplicação e adição de números de ponto fixo
Ponto introdutório
Os números de ponto fixo e de ponto flutuante foram introduzidos em blogs anteriores. Se você quiser saber mais, pode acessar os seguintes links:
[Ponto fixo e ponto flutuante] Explicação dos números de ponto fixo e de ponto flutuante
vantagem de ponto fixo
Quais são as vantagens de usar uma representação de ponto fixo? Por que não simplesmente normalizar todos os valores para o intervalo de inteiros e lidar com inteiros. Normalize todos os valores para inteiros, o que produz código e documentação muito ilegíveis. O ponto fixo geralmente é mais conveniente ao analisar algum código. Por exemplo, se eu estiver olhando para o código-fonte assim:
c0 = fixbv(0.0032, min=-1, max=1, res=2**-15)
c1 = fixbv(-0.012, min=-1, max=1, res=2**-15)
É fácil relacionar isso com os coeficientes do filtro, mas se você vir apenas números inteiros:
c0 = intbv(0x0069, min=-2**15, max=2**15)
c1 = intbv(-0x0189, min=-2**15, max=2**15)
Precisa ver outras informações. Os inteiros sozinhos dificultam a compreensão do que esses valores pretendem representar.
Além das vantagens de apresentação, também é comum em dados de ponto fixo quando usados para lidar com situações de arredondamento e estouro.
Multiplicação e adição de números de ponto fixo
A operação de multiplicação de números de ponto fixo e a multiplicação de números decimais comuns podem ser usadas de maneira muito semelhante - cálculo de coluna; o mesmo vale para a adição de números de ponto fixo.
multiplicação
Ao calcular a multiplicação de números de ponto fixo, desde que o valor numérico seja convertido em binário, a existência do ponto decimal pode ser temporariamente ignorada, pois, como mencionado anteriormente, a razão pela qual um número de ponto fixo é chamado de ponto fixo número do ponto é porque sua posição do ponto decimal é fixa, portanto, você pode primeiro fazer o cálculo e depois determinar a posição do ponto decimal.
O seguinte é um exemplo, tomando dois números como 6,5625 (um total de 8 dígitos, incluindo 3 partes inteiras, 4 casas decimais) e 4,25 (um total de 8 dígitos, incluindo 5 partes inteiras, 2 casas decimais) dos dois números Multiplicar .
0110.1001 == 6.5625
000100.01 == 4.25
01101001
x 00010001
------------
01101001
00000000
00000000
00000000
01101001
00000000
00000000
00000000
--------------------
x000011011111001 == 0000011011.111001 == 27.890625
O número de dígitos necessários para o resultado do produto é a soma dos dígitos dos dois números. Muitas vezes, os resultados da multiplicação e adição são redimensionados e reduzidos em número de bits. Em ponto fixo, isso faz sentido intuitivo porque as casas decimais menores são descartadas, e o valor é arredondado de acordo com os bits descartados. Desta forma, a largura de bits dos dados pode ser reduzida, de modo a obter o efeito de redução da largura de bits.
Adição
A adição é um pouco mais complicada porque o ponto decimal precisa ser alinhado antes de fazer a adição. Use os mesmos valores do exemplo de multiplicação:
0110.1001 == 6.5625
000100.01 == 4.25
0110.1001
+ 000100.01
-------------
001010.1101 == 10.8125