Multiplicação de ponto fixo com números negativos

8

Estou perplexo com um problema simples. Digamos que eu tenho dois números de 4 bits no formato Q0.3. Um bit de sinal e três bits fracionários. Para que eu possa representar-1 através de 0.875.

Digamos agora que desejo fazer este cálculo: -0,25×0.875. Qual é:

-223×723

O que significa que estou multiplicando 1110 (-2) de 0111 (7) Claro que a resposta é-0,21875 ou -0,25 usando o número Q0.3 mais próximo.

Vamos fazer o trabalho.

1110×0111=01100010

que quando visto como um número Q0.6 é 1.100010, qual é -0,46875pelos meus livros. Por que isso está incorreto? Espero uma resposta de1.110010 (-0,21875)

O que eu fiz errado?

benjwy
fonte

Respostas:

10

Ao multiplicar os números de complemento de dois, você deve executar extensões de sinal nos operandos para encontrar o número de dígitos que sua multiplicação produzirá, ou seja, no seu caso 4+4=8 dígitos.

111111102×000001112=111100102

Como existem 23 bits fracionários, o resultado é 1.1100102=-1426=-0,21875. Normalizando esse número para3 bits fracionários no formato Q0.3 produz 1.1102=-0,25.

Robin Klose
fonte