È l'algoritmo di cabina per la moltiplicazione solo per moltiplicare 2 numeri negativi (-3 * -4)
o un numero positivo e uno negativo %codice% ? Ogni volta che moltiplico 2 numeri positivi usando l'algoritmo della cabina ottengo un risultato sbagliato.
esempio: 5 * 4
A = 101 000 0 (-3 * 4)
S = 011 000 0 // binary of 5 is 101
P = 000 100 0 // 2's complement of 5 is 011
x = 3
y = 3
m = 5
-m = complemento a 2 di m
r = 4
-
Dopo il passaggio a destra di P di 1 bit 0 000 100
-
Dopo il passaggio a destra di P di 1 bit 0 000 010
-
P + S = 011 001 0
Dopo il passaggio a destra di 1 bit 0 011 001
-
Eliminazione di LSB 001100
Ma questo risulta essere il binario di 12. Dovrebbe essere stato 20 (010100)