Algèbre de Boole/Utiliser le système binaire
L'addition
modifierL'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
modifierLa 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
modifierPour 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
modifierUne 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
modifierPour 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
modifierIdem avec les chaînes de caractères associées suivantes :
binoct "0001110100
" et octbin "01376524
"