Calcul binaire : Multplication et retenue

Fermé
Messages postés
7
Date d'inscription
samedi 22 septembre 2012
Statut
Membre
Dernière intervention
15 mars 2014
-
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
-
Bonsoir

Voilà mon problème , dans une multiplication du genre 123*234 , après conversion , cela se traduit par une multiplication sous 8 bits , et les retenues deviennent dangeureuses

on a du :
0+1 = 1
1+1= 0 et retenue 1
1+1+1=1 et retenue 1 ( pourquoi ? )
1+1+1+1=
1+1+1+1+1=

dans les 2 dernieres , j'ai vaguement retenue qu'on parlait de retenue 10 ou je sis pas quoi , mais je ne sais pas comment ajouter 10 au rang superieur par rapport au 1 de d'habitude ?
Il faudrait ajouter 0 prochain et le 1 à celui qui suit ?
Merci d'avance

2 réponses

Messages postés
16472
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
26 janvier 2022
2 939
Les retenues ne sont pas dangereuses, elles ne peuvent prendre que deux valeurs, 0 et 1 !

Pour la somme du premier bit on n'a pas de retenue "en attente". Soit A et B les deux premiers bits à sommer, C le bit résultat et R la valeur de la retenue pour l'étape suivante.

On a seulement 4 cas possibles :

A+B = R C
0 0   0 0
0 1   0 1
1 0   0 1
1 1   1 1

Pour le premier bit additionné, on ne peut donc générer que deux valeurs de retenues R=0 ou R=1, il faut donc prendre en considération cette valeur pour la suite.

Pour la somme du deuxième bit, soit Q la valeur de la retenue "en attente" (c'est à dire la retenue R calculée à la somme du premier bit)

On a alors 8 cas possibles :

A+B+Q = R C
0 0 0   0 0
0 0 1   0 1
0 1 0   0 1
0 1 1   1 0
1 0 0   0 1
1 0 1   1 0
1 1 0   1 0
1 1 1   1 1

Là encore, on ne peut générer que deux valeurs de retenues, R=0 ou R=1. Donc les 8 cas que j'ai présenté seront encore valables pour la somme du 3è bit, du 4è, etc.
En imposant R=0 pour la somme du premier bit, ces 8 cas sont encore valables !

Il n'y a donc jamais de cas particulier : la somme de deux bits avec un bit de retenue donne toujours un bit de résultat et un bit de retenue.

Les "retenues à 10" (c'est à dire des retenues à plusieurs bits) ça n'existe pas !

Jusqu'ici j'ai parlé des additions, venons-en aux multiplications :

Si on multiplie A par B, on regarde chaque bit de B. Quand il vaut 0 on ajoute 0 donc on ne fait rien, et quand il vaut 1 on additionne le résultat courant avec A (auquel on aura ajouté les 0 des "dizaines" comme on le fait en décimal)

Exemple (valable en binaire, en décimal, et dans n'importe quelle autre base)
10101 * 1010 = 10101 * (1000 + 0 + 10 + 0) = 10101000 + 101010

Si tu "poses" cette multiplication à la main ça fait :

     10101
x     1010
----------
         0
    101010
       000
+ 10101000

Il ne s'agit donc plus que de faire les sommes une à une comme je les ai décrite plus haut. Les retenues n'interviennent pas dans la multiplication !
Messages postés
16472
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
26 janvier 2022
2 939
Erratum : Pour le premier "tableau" (avec les 4 cas possibles) la dernière ligne est bien sûr :

A+B = R C
1 1   1 0
Messages postés
7
Date d'inscription
samedi 22 septembre 2012
Statut
Membre
Dernière intervention
15 mars 2014

Salut et merci

Je sais pas si je me suis fais bien comprendre .

Lors de ma multiplication , je me retrouve avec :

0000000
011110110
0000000000
01111011000
000000000000
0111101100000
01111011000000
011110110000000


J'arrive dans certains cas , ou il y a 1 1 1 1 1 et 1 1 1 1 , comment savoir si =0 et retenue 1 ou =1 et retenue 1 ?
Messages postés
16472
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
26 janvier 2022
2 939
Les additions ne concernent que deux nombres. Si tu as plus que deux nombres il faut faire les opérations les unes après les autres. D'abord tu calcules 011110110+01111011000, puis c'est le résultat obtenu que tu additionnes à 0111101100000, etc.

         01111011
x        11101010
-----------------
                0
        011110110 A
                0
      01111011000 B
                0
    0111101100000 C
   01111011000000 D
+ 011110110000000 E
-----------------
      10011001110 A+B
    0111101100000 C
   01111011000000 D
+ 011110110000000 E
-----------------
    1010000101110 A+B+C
   01111011000000 D
+ 011110110000000 E
-----------------
   11001011101110 A+B+C+D
+ 011110110000000 E
-----------------
  111000001101110 A+B+C+D+E

Remarque : plutôt que de faire une seule addition à chaque fois, on peut regrouper les nombres deux par deux, et faire des additions par couples (ça gagne du temps)

         01111011
x        11101010
-----------------
                0
        011110110 A
                0
      01111011000 B
                0
    0111101100000 C
   01111011000000 D
+ 011110110000000 E
-----------------
      10011001110 A+B
   10111000100000 C+D
+ 011110110000000 E
-----------------
   11001011101110 A+B+C+D
+ 011110110000000 E
-----------------
  111000001101110 A+B+C+D+E
Messages postés
7
Date d'inscription
samedi 22 septembre 2012
Statut
Membre
Dernière intervention
15 mars 2014

Merci énormément ! Je viens de le refaire tout seul ! Méthode parfaite !
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 197
Bonjour,
Une tite recherche et ça donne ça
A+