Algèbre de Boole/Utiliser le système binaire

Algèbre de Boole
Algèbre de Boole
Algèbre de Boole
Sommaire
Modifier ce modèle

L'addition

modifier

L'addition en binaire s'effectue de la même manière qu'en décimal.

Principe de base :

0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0 (avec retenue)

Exemple d'addition :

     * *       * *     (les colonnes avec * contiennent des retenues)
   1 0 1 1 1 1 0 1 1
+      1 1 0 0 0 0 1
---------------------
=  1 1 1 0 1 1 1 0 0

La soustraction

modifier

La soustraction en binaire s'effectue de la même manière qu’en décimal.

Principe de base :

0 − 0 = 0
0 − 1 = 1 retiens 1
1 − 0 = 1
1 − 1 = 0

Exemple de soustraction :

    *   * * *   (les colonnes avec * contiennent des retenues)
  1 1 0 1 1 1 0
−     1 0 1 1 1
----------------
= 1 0 1 0 1 1 1

Conversion du système décimal vers le système binaire

modifier

Pour développer l'exemple ci-dessus, le nombre 45 853 écrit en base décimale provient de la somme de nombres ci-après écrits en base décimale. À dire vrai, pour proposer une méthode plus simple à comprendre, il faut trouver la puissance de 2 la plus grande possible inférieure ou égale au nombre de départ. On soustrait au nombre d'origine (RO) cette puissance, en notant un 1, puis l'on cherche à nouveau un multiple (RM) pour le reste (Rr).

  • 1. RO = RM1+Rr1
  • 2. Rr1 = RM2+Rr2
  • 3. Rr2 = RM3+Rr3

...

 32 768  1 fois  32 768  on fait 2 multiplié 14 fois par lui-même soit 215
+     0  0 fois  16 384  on fait 2 multiplié 13 fois par lui-même soit 214
+ 8 192  1 fois   8 192         idem         12      idem              213
+ 4 096  1 fois   4 096         idem         11      idem              212
+     0  0 fois   2 048         idem         10      idem              211
+     0  0 fois   1 024         idem          9      idem              210
+   512  1 fois     512         idem          8      idem              29
+   256  1 fois     256         idem          7      idem              28
+     0  0 fois     128         idem          6      idem              27
+     0  0 fois      64         idem          5      idem              26
+     0  0 fois      32         idem          4      idem              25
+    16  1 fois      16         idem          3      idem              24
+     8  1 fois       8         idem          2      idem              23
+     4  1 fois       4         idem          1      idem              22
+     0  0 fois       2         idem          0      idem              21 = 2
+     1  1 fois       1                                                 20 = 1
=45 853

Soit écrit en système positionnel et en numération décimale (en écrivant les puissances de 2) :

45 853 = 1×215 + 0×214 + 1×213 + 1×212 + 0×211 + 0×210 + 1×29  + 1×28  + 
         0×27  + 0×26  + 0×25  + 1×24  + 1×23  + 1×22  + 0×21  + 1×20

Soit en système positionnel et en numération binaire puisque l'on ne reporte pas les puissances de 2

45 853 décimal s'écrit 1011 0011 0001 1101 binaire (séparés par groupes de 4 bits pour aérer la lecture).

Ce nombre nécessite 16 bits pour son écriture (il est compris entre 215 et 216). L'autre méthode pour convertir un nombre décimal en base 2 est d'utiliser des successions de divisions par le nombre 2. Ainsi, on a:

45853 / 2 = 22926 reste 1
22926 / 2 = 11463 reste 0
11463 / 2 =  5731 reste 1
 5731 / 2 =  2865 reste 1
 2865 / 2 =  1432 reste 1
 1432 / 2 =   716 reste 0
  716 / 2 =   358 reste 0
  358 / 2 =   179 reste 0
  179 / 2 =    89 reste 1
   89 / 2 =    44 reste 1
   44 / 2 =    22 reste 0
   22 / 2 =    11 reste 0
   11 / 2 =     5 reste 1
    5 / 2 =     2 reste 1
    2 / 2 =     1 reste 0
    1 / 2 =     0 reste 1

Soit (en lisant les restes obtenus en sens inverse): 1011001100011101

Astuce de conversion de binaire par position dans une chaîne de caractères

modifier

Une astuce, par exemple pour écrire un programme d'émulation d'instructions assembleur 16 bits, programme qui tournera sur une machine avec un processeur 8 bits. Elle permet d'éviter le calcul et ne s'appuie que sur la position d'une sous-chaîne (ou d'un caractère) dans une chaîne de référence, pour trouver la position du caractère (ou d'une sous-chaîne) correspondant dans la chaîne de référence qui est associée. Aussi, des fois que, les voici :

Conversion binaire / hexadécimal

modifier

Pour convertir du binaire (4 bits) en hexadécimal, ou réciproquement, sans avoir à calculer, c'est possible avec les chaînes suivantes :

binhexa "0000111100101101000" et hexabin "0137FEC925B6DA48"

En effet, la position (unique) d'une chaîne constituée de 4 bits dans la chaîne "binhexa" donne la position du caractère hexadécimal correspondant dans la chaîne associée "hexabin". Et réciproquement, la position (unique) d'un caractère hexadécimal dans la chaîne "hexabin", donne la position du début de la sous-chaîne de 4 "bits" correspondante dans la chaîne associée "binhexa".

Exemple :

  • b"1110" est en 6e position dans la chaîne binhexa, "0000111100101101000", ce qui correspond dans la chaîne hexabin "0137FEC925B6DA48" au caractère h"E" ;
  • h"4" est en 15e position dans la chaîne hexabin, "0137FEC925B6DA48", ce qui correspond dans la chaîne binhexa "0000111100101101000" à la position du premier caractère de la chaîne de 4 bits "0100".

Conversion binaire / octal

modifier

Idem avec les chaînes de caractères associées suivantes :

binoct "0001110100" et octbin "01376524"