J'ai lu ceci post sur la multiplication binaire en utilisant deux compléments. mais ce n'est pas très clair pour moi. Même moi, j'ai du mal à comprendre l'article wiki à ce sujet. Je veux savoir comment calculer les multiplications des nombres négatifs:
eg: -1 with -7 should give 7.
A 4-bit, 2's complement of -1 is : 1111
A 4-bit, 2's complement of -7 is : 1001
une méthode pas à pas pour calculer la multiplication sera utile. Aucun article sur lequel je suis tombé sur la division. Comment aborder cela?
étape 1: sign extend
les deux entiers à deux fois plus de bits. Cette opération est sûre, mais peut ne pas toujours être nécessaire.
for 4-bit --> 1111, you would extend as 1111 1111
for 4-bit --> 0111,you would extend as 0000 0111
étape 2: faire la multiplication élémentaire
sep 3: prendre le nombre correct de bits de résultat de la partie la moins significative du résultat.
par exemple: après la multiplication, vous vous retrouvez avec quelque chose comme 0010011110
prendre les 8 derniers bits, c'est-à-dire 10011110
Permettez-moi d'illustrer l'exemple que vous avez fourni: -1 X -7
en représentation 4 bits
1111 1111 -1
x 1111 1001 x -7
---------------- ------
11111111 7
00000000
00000000
11111111
11111111
11111111
11111111
11111111
----------------
1 00000000111 ---> 7 (notice the Most significant bit is zer``o)
-------- (last 8-bits needed)
vous pourriez obtenir plus de détails ici ;
pour la division: convertir en positif et après le calcul ajuster le signe. Je vais laisser cela comme exercice mais vous pouvez vous référer à ceci page .
D'accord, voyons si je peux vous simplifier la tâche.
Complément à deux: IFF (si et seulement si) vous avez un nombre négatif, mettez-le d'abord sous la forme positive. Par souci de simplicité, tous les nombres seront de 6 bits. La limite des bits limitera la taille de vos numéros. En plus de cela, la taille n'a pas d'importance.
Certains nombres convertis dans leur forme binaire positive -7: 000111 16: 010000 -22: 010110 1: 000001
Maintenant pour -7 et -23 UNIQUEMENT, nous ferons un complément à deux. Nous inversons donc les bits (1 -> 0 && 0 -> 1), puis en ajoutons un.
000111
Goes to the complement + 1
111000
+ 1
=111001
Et pour 22
010110
Goes to the complement + 1
101001
+ 1
=101010
Ensuite, vous les ajoutez simplement comme vous le feriez pour n'importe quel autre numéro.
Et il semble que quelqu'un d'autre ait déjà couvert la partie multiplication, donc je ne vais pas prendre la peine de répéter cela.