Les systèmes de numération, calculs et algèbre de Boole
CRDL – Rossi Yannick Informatique
15.12.2021
Table des matières
Résumé...3
Introduction...4
Les différents systèmes de numération ...5
Décimal...5
Binaire ...5
Octal ...6
Hexadécimal ...7
Notations, calculs et conversions ...8
Notations...8
Calculs de bases...8
Conversions ...11
Codage des nombres entiers...13
Algèbre de Boole ...15
Analogie aux signaux et rapports cycliques PWM...18
Conclusion ...19
Bibliographie / Sources...20
Annexes...21
Résumé
Dans le cadre de ce cours, il est intéressant de comprendre comment fonctionne les différentes bases chiffrées, c’est-à-dire la base décimale comme on la connait bien, mais également les bases de deux/binaire, octal ou encore hexadécimal. Les calculs dans ces différentes bases font partie intégrante de ce cours au même titre que la compréhension du codage des nombres entiers. Une courte analogie aux signaux et aux rapports cycliques PWM sera le dernier thème abordé dans ce rapport afin de conclure sur un chapitre plus concret.
Introduction
Pour comprendre comment fonctionne un ordinateur et surtout comprendre les bases de l’informatique, il est nécessaire d’apprendre à travailler dans plusieurs systèmes de numération. Au- delà de ça, les conversions, les notations et les calculs dans les différents systèmes sont primordiaux pour la suite. L’algèbre de Boole vous permettra finalement de comprendre certaines logiques qui pourront vous êtes présentées par la suite. Enfin, pour ne pas traiter uniquement d’aspects théoriques, l’analogie avec les signaux permettra de faire un lien avec les sujets de la pratique.
Les différents systèmes de numération
Décimal
Dans la vie de tous les jours, nous utilisons très couramment les chiffres et les mathématiques. Pour que tout le monde puisse comprendre et communiquer en mathématique, il est nécessaire d’utiliser la même base de chiffre, c’est-à-dire s’accorder sur le fait que si l’on note « 3 », tout le monde comprendre bien 3 et pas autre chose.
C’est la raison pourquoi nous utilisons quotidiennement la base 10 ou base décimale lorsque l’on utilise des chiffres. Qu’est-ce que cela signifie ?
Nous utilisons 10 chiffres pour définir l’intégralité des nombres réels, soit 0, 1, 2, 3, 4, 5, 6, 7, 8 et 9.
Sans se poser de questions, si je note 1456, vous allez tous comprendre ce que cela signifie, le nombre mille-quatre-cent-cinquante-six. Il s’agit fondamentalement d’une somme explicitement nommée :
𝟏 ∗ 𝟏𝟎𝟑+𝟒 ∗ 𝟏𝟎𝟐+𝟓 ∗ 𝟏𝟎𝟏+𝟔 ∗ 𝟏𝟎𝟎=𝟏𝟒𝟓𝟔
Nous multiplions chaque chiffre par 10 à la puissance définie par son positionnement (unité, dizaine, centaine, millier…)
Binaire
Au même titre que la base décimale, la base binaire est fréquemment utilisée, mais pas dans les mêmes domaines. Le langage binaire n’est pas spécialement utilisé dans la vie courante, mais universellement utilisée en informatique et en traitement du signal.
En suivant la théorie de la base décimale à 10 chiffres, nous avons ici uniquement 2 chiffres existants, 0 et 1. Nous allons donc retrouver généralement des nombres ressemblant à cela : 1011
Nous sommes en base 2 ou binaire, comment cela se traduit-il dans notre langage courant :
𝟏 ∗ 𝟐𝟑+𝟎 ∗ 𝟐𝟐+𝟏 ∗ 𝟐𝟏+𝟏 ∗ 𝟐𝟎=𝟖+𝟎+𝟐+𝟏=𝟏𝟏
Nous multiplions cette fois-ci chaque chiffre par 2 à la puissance définie également par son positionnement (unité, dizaine, centaine, millier…)
Table de base en binaire pour 4 bits
Binaire Décimal
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 10
1011 11
1100 12
1101 13
1110 14
1111 15
Quelques règles en binaire
1. Lorsque l’on divise, il n’existe pas de nombre à virgule, mais un reste (Modulo). Par exemple 8/16 = 0R8 (0 reste 8) et pas 0,5.
2. Les 0 tout à gauche n’ont pas besoin d’être notés, par exemple 0100 = 100 .
Octal
Nous sommes cette fois-ci sur une base 8 ou octale, nous avons donc 8 chiffres pour exprimé tout ce que l’on souhaite : 0, 1, 2, 3, 4, 5, 6 et 7.
Il est important de comprendre que certains chiffres vont s’écrire comme dans la base décimale, c’est notamment le cas pour 124 par exemple qui ne signifie pas 124 en langage décimal. Nous verrons par la suite comment notifier dans quelle base nous travaillons pour éviter des erreurs de compréhension.
Reprenons notre 124 en langage octal et développons notre équation comme dans les bases précédentes :
𝟏 ∗ 𝟖𝟐+𝟐 ∗ 𝟖𝟏+𝟒 ∗ 𝟖𝟎=𝟔𝟒+𝟏𝟔+𝟒=𝟖𝟒
Hexadécimal
Finalement, la dernière base que nous allons aborder ici est la base 16 ou hexadécimale. Nous travaillons alors avec 16 valeurs possibles : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Il est possible de voir les valeurs de A-F comme des valeurs de 10-15 A = 10
B = 11 C = 12 D = 13 E = 14 F = 15
Comment dans la base 8, nous pouvons nous retrouver avec des nombres ambigus comme 124 qui ne signifie pas la même valeur en hexadécimal qu’en décimal ou en octal. Là encore, il sera important de comprendre comment indiquer clairement dans quelle base ou système nous travaillons.
Prenons 2 exemples pour bien comprendre comment interpréter un nombre en hexadécimal. Le premier est donc 124 et le second 12FA.
Pour 124, hexadécimal:
𝟏 ∗ 𝟏𝟔𝟐+𝟐 ∗ 𝟏𝟔𝟏+𝟒 ∗ 𝟏𝟔𝟎=𝟐𝟓𝟔+𝟑𝟐+𝟒=𝟐𝟗𝟐
Pour 12FA, hexadécimal:
𝟏 ∗ 𝟏𝟔𝟑+𝟐 ∗ 𝟏𝟔𝟐+𝑭 ∗ 𝟏𝟔𝟏+𝑨 ∗ 𝟏𝟔𝟎=𝟏 ∗ 𝟏𝟔𝟑+𝟐 ∗ 𝟏𝟔𝟐+𝟏𝟓 ∗ 𝟏𝟔𝟏+𝟏𝟎 ∗ 𝟏𝟔𝟎
=𝟒𝟎𝟗𝟔+𝟓𝟏𝟐+𝟐𝟒𝟎+𝟏𝟎=𝟒𝟖𝟓𝟖
Notations, calculs et conversions
Notations
Nous venons de voir qu’il est possible d’écrire des nombres dans différents systèmes. Il est maintenant important de savoir comment indiquer le système dans lequel nous travaillons afin de ne pas avoir d’ambiguïté. La notation est assez simple et se présente comme suit :
(110101)2 (124)8 (124)10
(124)16
En réalité, il suffit d’indiquer le système à l’aide de son chiffre en tant qu’indice. Pour le binaire, nous utiliserons donc l’indice 2, pour l’octal le 8, pour l’hexadécimal le 16 et enfin pour le décimal le 10.
Calculs de bases
Dans ce chapitre, nous allons apprendre à additionner au sein d’un système. Commençons par revoir comment se passe l’addition dans le système décimal.
Prenons : 17 + 4 = 21
Évidemment, on peut le faire de tête, mais initialement, nous avons appris comme cela :
Pour le système hexadécimal ou octal, c’est exactement pareil, voici un exemple en hexadécimal :
La somme de 3 + A = 13 = D, on ne retient rien, ensuite, 6 + F = 21 = 16 (la retenue donc) + 5 et enfin, 1 + 1 + 1 = 3 ce qui donne finalement 35D en hexadécimal.
Pour le système binaire, on va utiliser le même principe, la disposition n’est pas indispensable, mais peut aider à commencer avec ces calculs.
Prenons l’exemple suivant :
La différence vient finalement du fait que l’on insère une retenue (en rouge) dans la colonne juste à gauche dès que la somme de la colonne atteint la valeur de 2 ou 3 (1+1). Dans le cas ci-dessus, on procède comme suit : 1 + 0 = 1 1 + 1 = 0 et on retient 1 1 + 1 = 0 et on retient 1 1 + 1 = 0 et on retient 1 1 + 1 + 1 = 1 et on retient 1 finalement, il nous reste encore 1 à ajouter à gauche.
Comme le binaire est le système le plus utilisé en informatique, nous allons également apprendre à soustraire 2 nombres, multiplier 2 nombres ou encore diviser 2 nombres.
La soustraction s’effectue comme suit (2 exemples) :
Finalement, chaque fois que l’on soustrait une ligne à l’autre et que l’on obtient -1 ou -2, il faut emprunter 2, lorsque l’on emprunte 2, il faut ajouter une retenue à la colonne à gauche qui sera également soustraite par la suite.
Examinons maintenant le premier calcul. On commence à droite avec 0 – 1 = -1, il faut donc emprunter 2 pour revenir en positif. Du fait que l’on emprunte 2, on doit ajouter une retenue à la colonne juste à gauche, le 1 en bleu. Maintenant, 2 – 1 = 1 dans la première colonne. On est bon, passons à la seconde colonne, 1 – 1 (la retenue) = 0, puis 1 – 1 = 0 puis 0 – 0 = 0 puis 1 – 0 = 1.
Dans le second calcul, nous procédons pareil à la différence qu’il faut emprunter 2 fois et donc nous avons 2 retenues.
La multiplication s’effectue comme suit : (A = 100101 et B = 101101)
Il est important de commencer par faire un tableau comme ci-dessus, ce qu’on va faire c’est inscrire A à la verticale en partant du bas et ensuite on rentre B de la façon dont il est multiplié par A, comme on peut le voir en verre en prenant soin de décaler de 1 case vers la gauche à chaque fois. La dernière étape consiste à trouver les différents « S » en additionnant les 2 lignes au-dessus comme nous l’avons appris précédemment.
Finalement, la division s’effectue comme suit : (A = 11011 et B = 101)
Avant tout, il est nécessaire ici aussi de faire un tableau comme ci-dessus en indiquant les 2 nombres à diviser sur la première ligne. Ensuite, il faut reporter le dénominateur en dessous du numérateur si celui-ci est plus petit et indiquer un 1 tout à gauche, ce 1 est donc la première valeur du résultat.
Effectuer ensuite la soustraction comme vous savez le faire . Ici, cela nous donne 001, auquel nous allons abaisser le 1 du numérateur pour obtenir 0011. 101 est plus grande que 0011 donc on doit ajouter un 0 à gauche qui correspond à notre deuxième valeur dans le résultat. On reporte le chiffre en abaissant le dernier 1 du numérateur pour obtenir 00111 auquel on va soustraire 101 et donc générer un 1 à gauche qui est notre troisième valeur dans le résultat. Nous obtenons donc 010 qui est inférieur à 101, cela signifie que c’est notre reste. Le résultat est finalement 101 avec un reste de 010
Conversions
Dans ce chapitre, nous allons apprendre comment passer d’un système à l’autre. De manière générale, il existe plusieurs conversions possibles, mais nous allons nous focaliser sur celles qui peuvent être plus fréquemment utilisées uniquement. De plus, nous avons déjà traité de la conversion des différents systèmes dans la base décimale au début de ce cours. Nous traiterons donc des conversions suivantes :
Binaire Octal
Octal Binaire
Binaire Hexadécimal
Hexadécimal Binaire
Pour passer du système octal à hexadécimal et inversement, il est judicieux de passer par le système binaire.
Binaire Octal
Il s’agit d’une transformation de base relativement simple, car il suffit de décomposer le nombre binaire en plusieurs nombres de 3 bits et de convertir ses nombres individuellement :
(111010101)2= (111/010/101)2= (725)8
Si les paquets ne sont pas complets, c’est-à-dire si le nombre binaire n’est pas un multiple de 3, il faut rajouter des zéros à gauche pour compléter le paquet.
Octal Binaire
Il s’agit finalement de la transformation inverse ayant pour but de convertir chaque chiffre du nombre du système octal en 3 bits.
(436)8= (100/011/110)2= (100011110)2
Binaire hexadécimal
Comme nous venons de le faire avec la conversion de binaire à octal sur 3 bits, nous allons faire pareil, mais avec 4 bits pour le système hexadécimal :
(111101010111)2= (1111/0101/0111)2= (𝐹57)16
Si les paquets ne sont pas complets, c’est-à-dire si le nombre binaire n’est pas un multiple de 4, il faut rajouter des zéros à gauche pour compléter le paquet.
Hexadécimal Binaire
Pour cette dernière transformation, nous allons procéder de la même manière, mais dans le sens inverse :
(𝐷5𝐴2)16= (1101/0101/1010/0010)2= (1101010110100010)2
Codage des nombres entiers
Le codage des nombres positifs est une procédure que vous connaissez déjà, car finalement, il s’agit simplement de convertir un nombre décimal en binaire. Maintenant, si ce nombre est négatif, nous pouvons également l’exprimer dans le système binaire.
Coder un entier positif
1. Choisir la longueur n (bits) 2. Coder la valeur sur n bits
Exemple :
1. 96 va nécessiter 8 bits, car généralement, on code sur des multiples de 4 et 4 bits permettent uniquement d’aller de 0 à 15. Avec 8 bits, il est possible de coder de -128 à 127 soit 2 à la puissance 8 possibilités (256).
2.
(96)10= (01100000)2
Coder un entier négatif
1. Choisir la longueur n (bits) 2. Coder la valeur sur n bits 3. Inverser tous les bits 4. Ajouter 1 codé sur n bits
Exemple :
1. -96 va nécessiter 8 bits, car généralement, on code sur des multiples de 4 et 4 bits
permettent uniquement d’aller de 0 à 15. Avec 8 bits, il est possible de coder de -128 à 127 soit 2 à la puissance 8 possibilités (256).
2. On code sur n bits :
(96)10= (01100000)2
3. On inverse tous les bits :
(10011111)2 4. On ajoute 1 codé sur 8 bits
(10100000)2 = = (―96)10
Contrôle
Pour contrôler, il suffit d’additionner 96 et -96 et le résultat doit bien évidemment être 0.
Nous n’allons pas traiter du carry bit dans ce cours, mais il s’agit d’une retenue indiquant qu’un emprunt arithmétique a été généré. Il peut être utile dans certains cas et certains processeurs l’utilisent, mais nous n’allons pas rentrer dans les détails.
Négatif Positif
Pour passer d’un nombre négatif en binaire, il existe de technique :
1. Soustraire 1 codé sur n bits puis inverser tous les bits 2. Inverser tous les bits puis ajouter 1 codé sur n bits
Finalement, il s’agit de procédures très similaires au codage d’un nombre négatif.
Algèbre de Boole
L’algèbre de Boole ou calcul booléen est un procéder logique permettant d’exécuter des opérations grâce à des opérateurs, des variables et des fonctions. Dans l’algèbre de Boole, il existe que 2 états logiques possibles : vrai ou faux.
L’état symbolique « VRAI », symbolisé par 1, signifie une variable avec un niveau « HAUT ». Cela signifie que la variable existe.
L’état symbolique « FAUX », symbolisé par 0, signifie l’inverse. Cela signifie que la variable est absente et que le niveau de la variable est « BAS »
Tables de vérité
Les tables de vérité représentent les états de sortie en fonction des états d’entrée selon les différentes lois ou opérateurs. Il s’agit simplement d’introduire ici ces différentes tables qui serviront par la suite en régulation par exemple.
OR :
x y x v y
0 0 0
0 1 1
1 0 1
1 1 1
Représentations : OR, x ˅ y, x + y, x | y, x || y
AND :
x y x ˄ y
0 0 0
0 1 0
1 0 0
1 1 1
Représentations : AND, x ˄ y, x * y, x & y, x && y
NOT (Inverseur) :
x ¬y
1 0
Représentations : NOT, ¬x, 𝑥, !x, ~x
XOR :
x y x ⊕ y
0 0 0
0 1 1
1 0 1
1 1 0
Représentations : EXOR, x ⊕ y
EXNOR :
x y 𝐱 ⊕ 𝐲
0 0 1
0 1 0
1 0 0
1 1 1
Représentations : EXNOR, x ⊕ y
NAND :
x y 𝐱 ˄ 𝐲
0 0 1
0 1 1
1 0 1
1 1 0
Représentations : NAND, x ˄ y, !(x & y), ¬(x * y), /(x * y)
NOR :
x y 𝐱 ˅ 𝐲
0 0 1
0 1 0
1 0 0
1 1 0
Propriétés Commutativité :
X ^ Y = Y ^ X X v Y = Y v X
Associativité :
X ^ (Y ^ Z) = (Y ^ X) ^ Z X v (Y v Z) = (Y v X) v Z
Distributivité :
X ^ (Y v Z) = (X ^ Y) v (X ^ Z) X v (Y ^ Z) = (X v Y) ^ (X v Z)
Idempotence :
A ^ A = A A v A = A
Priorité :
NOT puis AND puis OR
Loi de De Morgan
Si on doit mettre des termes à la loi de De Morgan, elle s’énonce comme suit : La négation de la disjonction de deux termes est équivalente à la conjonction des négations des deux termes. Pour vulgariser cela, on entend que (X OU Y) inversé est égale à (X inversé) ET (Y inversé).
Cela signifie donc que :
(x ˄ y) =(𝑥)˅(𝑦) (x ˅ y) =(𝑥)˄(𝑦)
On peut donc dire que cela consiste à changer le signe lorsque l’on rompt la jonction.
Analogie aux signaux et rapports cycliques PWM
Dans les domaines techniques actuels, nous travaillons sans cesse avec des signaux en tous genres. Il est également très courant de commander différents actuateurs progressivement avec des rapports cycliques, également appelés signaux PWM. Voyons à quoi cela ressemble :
On peut voir dans le signal ci-dessus que l’on a 2 valeurs. Soit la tension est à 0V, soit elle est à 12V. Il s’agit finalement de deux états qui peuvent être représentés grâce à un système binaire. Lorsque le bit est à 1, nous sommes à 12V, lorsque le bit est à 0, nous avons 0V par exemple. Plus la partie à 12V est élevée ou longue, plus l’actuateur est actionné longtemps et par exemple, dans le cas d’un moteur électrique, plus il va tourner vite.
On retrouve également les bits dans des signaux CAN bus et LIN sur les véhicules automobiles, dans la transmission de données…
Conclusion
Finalement, ce cours traite de divers sujets de bases en informatique. Les systèmes de numération, l’algèbre de Boole ou encore une analogie aux signaux sont les thèmes qui te permettront de poursuivre ta formation en informatique et acquérir de solides compétences. Comprendre comment fonctionne le système binaire est le point le plus important de ce cours, des bits, des 1 et 0 qui représentent différents états ou encore des calculs binaires. N’hésite pas à reprendre certaines parties incomprises.
Bibliographie / Sources
Algèbre de Boole - Wikipedia
Ebook : Comprendre la mécanique – Rossi Yannick
Annexes
-