Calcul binaire : Multplication et retenue

Bloupies Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
lermite222 Messages postés 9042 Statut Contributeur -
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

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    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 !
    1
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      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
      0
    2. Bloupies Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
       
      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 ?
      0
    3. KX Messages postés 19031 Statut Modérateur 3 020
       
      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
      0
    4. Bloupies Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci énormément ! Je viens de le refaire tout seul ! Méthode parfaite !
      0