5.2. Opérations sur les nombres binaires#
5.2.1. Quelques généralités#
On peut effectuer les opérations sur les nombres binaires, comme l’addition, la soustraction, etc.
Example 5.2
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.
Exercise 5.2
'0b111010' + '0b010101'
Show code cell output
'0b1110100b010101'
Indiquer ce qui ne convient pas quand on effectue le calcul précédent sous Python.
Exercise 5.3
Effectuer les sommes suivantes :
1101 et 0101
1101 + 1001
101101 + 1011
10101 + 11
11011001 + 110110
0010 0110 + 1000 1110
5.2.2. Les opérations « simples »#
Commençons par l’addition
Exercise 5.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
5.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.
Convertir le nombre 54 en binaire.
bin(54)
Show code cell output
'0b110110'
Décaler les bits d’un rang vers la gauche.
Show code cell outputs
110110
1101100
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.