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'
Hide 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 :

  1. 1101 et 0101

  2. 1101 + 1001

  3. 101101 + 1011

  4. 10101 + 11

  5. 11011001 + 110110

  6. 0010 0110 + 1000 1110

5.2.2. Les opérations « simples »#

Commençons par l’addition

Exercise 5.4

Effectuer les opérations suivantes.

  1. \((010010)_2 + (101011)_2\)

  2. \((011111)_2 + (110110)_2\)

  3. \((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^ est l’opérateur « ou exclusif » (XOR) et la retenue s’obtient avec un A & B& 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)
Hide code cell output
'0b110110'

Décaler les bits d’un rang vers la gauche.

Hide 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.