Section courante

A propos

Section administrative du site

Addition binaire

Les additions binaires se base sur le même principe qu'une addition en décimal. Ainsi, vous avez également une retenue lorsque le total des chiffres de la même colonne déborde sur le chiffre suivant. Ainsi, à partir de ce point, on peut déjà déterminé les règles suivantes :

0 + 0 → 0
0 + 1 → 1
1 + 0 → 1
1 + 1 → 0, retenue 1 (depuis 1 + 1 = 2 = 0 + (1 x 21) )

La partie de l'addition sur un bit est reproduisible avec l'opérateur binaire «Ou exclusif». Mais le problème c'est qu'une addition ne se limite pas à un seul chiffre, il faut tenir compte de plusieurs chiffres. Toutefois, étant donné la limite d'un nombre binaire (ayant une base numérique de deux possibilités), il faut également appliqués le principe de la retenue dans la retenue elle-même en la parcourant une boucle.

Voici donc l'algorithme classique pour arrivé à ce résultat :

MODULE Addition(a, b)
   retenueab
   resultata XOR b
   FAIRE TANT QUE retenue ≠ 0
      decalageRetenueretenue décalage vers la droite de 1
      retenueresultatdecalageRetenue
      resultatresultat XOR decalageRetenue
   FIN BOUCLE TANT QUE
   RETOURNER resultat

Exemple

L'exemple suivant écrit en langage de programmation Java permet de calculer des nombres naturels en utilisant des décalages de bits, des «Et binaires» et des «Ou exclusif» :

  1. package additionsamples;
  2.  
  3. public class AdditionSamples {
  4.  
  5.     public static int Addition(int a, int b) {
  6.         int carry = a & b;
  7.         int r = a ^ b;
  8.         while(carry != 0) {
  9.             int shiftCarry = carry << 1;
  10.             carry = r & shiftCarry;
  11.             r ^= shiftCarry;
  12.         }
  13.         return r;
  14.     }
  15.  
  16.     public static void main(String[] args) {
  17.          System.out.print("8 + 8 = " + Integer.toString(Addition(8,8)) + "\n");
  18.          System.out.print("3 + 2 = " + Integer.toString(Addition(3,2)) + "\n");
  19.          System.out.print("7 + 5 = " + Integer.toString(Addition(7,5)) + "\n");
  20.          System.out.print("20 + 32 = " + Integer.toString(Addition(20,32)) + "\n");
  21.          System.out.print("15 + 15 = " + Integer.toString(Addition(15,15)) + "\n");
  22.     }
  23. }

on obtiendra le résultat suivant :

8 + 8 = 16
3 + 2 = 5
7 + 5 = 12
20 + 32 = 52
15 + 15 = 30


Dernière mise à jour : Dimanche, le 30 avril 2017