2.2. Opérations sur les nombres binaires#
2.2.1. Quelques généralités#
On peut effectuer les opérations sur les nombres binaires, comme l’addition, la soustraction, etc.
Exemple 2.3
11 <--- ligne des retenues
111010
+
010101
------
1001111
Attention, sous Python, les nombres binaires sont représentés avec des chaines de caractères, on ne peut donc pas simplement les additionner.
Exercice 2.2
'0b111010' + '0b010101'
Indiquer ce qui ne convient pas quand on effectue le calcul précédent sous Python.
Exercice 2.3
Effectuer les sommes suivantes :
1101 et 0101
1101 + 1001
101101 + 1011
10101 + 11
11011001 + 110110
0010 0110 + 1000 1110
2.2.2. Les opérations « simples »#
Commençons par l’addition
Exercice 2.4
Effectuer les opérations suivantes.
\((010010)_2 + (101011)_2\)
\((011111)_2 + (110110)_2\)
\((110110)_2 + (110110)_2\)
Note
On peut remarquer que la somme de deux nombres à \(n\) bits est un nombre à au plus \(n+1\) bits.
Avertissement
Attention, sur \(n\) bits, les bits de rang supérieur ou égal à \(n\) sont tronqués, en particulier
L’additionneur, ou plus précisément le demi-additionneur est très simple à réaliser. En effet, l’addition de deux bits \(A\) et \(B\) s’obtient avec les A ^ B où ^ est l’opérateur « ou exclusif » (XOR) et la retenue s’obtient avec un A & B où & est l’opérateur « et ». Cette notion sera précisée dans le cours sur les booléens
2.2.3. Multiplication#
Dans les exemples d’addition, on a vu que la multiplication par 2 (10 en binaire) correspondait à un décalage des bits vers la gauche.
On rappelle la table de multiplication en base 2 :
| 0 | 1 |
|—|—|—| | 0 | 0 | 0 | | 1 | 0 | 1 |
Convertir le nombre 54 en binaire.
bin(54)
Décaler les bits d’un rang vers la gauche.
Avertissement
Python peut représenter les nombres binaires avec les \(f\)-strings et le modifier :b
La multiplication complète est donc la succession d’addition et de décalage (comme la multiplication usuelle). Pour la division, on procède par décalage à droite, en ajoutant des 0 à gauche.