Objectif. Convertir des réels simples entre bases (de 10 à 2, 3, 16) et comprendre la représentation en virgule flottante (IEEE-754).

1. Conversion base 10 vers base 2 (nombre fractionnaire)

On traite séparément la partie entière et la partie fractionnaire du nombre réel \(N\).

Méthode

  1. Convertir la partie entière comme un entier (divisions entières successives par 2).
  2. Pour la partie fractionnaire \(f\in[0, 1[\) :
    1. Calculer \(f \times 2\).
    2. Noter la partie entière (0 ou 1) : c’est le prochain bit.
    3. Remplacer \(f\) par sa partie fractionnaire et recommencer jusqu’à la précision voulue.

Exemple : \(3{,}47_{10}\) en base 2

Partie entière : \(3_{10}=11_2\).

Partie fractionnaire :

ÉtapeCalculPartie entièreNouvelle fraction
10,47 × 2 = 0,9400,94
20,94 × 2 = 1,8810,88
30,88 × 2 = 1,7610,76
40,76 × 2 = 1,5210,52
50,52 × 2 = 1,0410,04
60,04 × 2 = 0,0800,08

Donc \(0,47_{10} \approx 0{,}011110_2\).
Conclusion : \(3{,}47_{10} \approx 11{,}01111_2\).

Remarque : Beaucoup de décimaux ont en binaire une écriture périodique et donc infinie.

Applications :

2. Conversion de base 2 vers base 10

Si \(N = d_n\cdots d_1 d_0 . d_{-1} d_{-2} \cdots d_{-m}\) en base 2, alors :

\(N = \sum_{i=0}^{n} d_i 2^i + \sum_{j=1}^{m} d_{-j} 2^{-j}\).

Applications :

3. Nombres flottants en machine (IEEE-754)

Un réel est représenté sous la forme normalisée \( \pm 1{,}M \times 2^{e} \) (le 1 avant la virgule est implicite en binaire normalisé).

Simple précision (32 bits)

Exemple : \(-10{,}125_{10}\)

  1. \(10{,}125_{10} = 1010{,}001_2 = 1{,}010001 \times 2^3\)
  2. Signe = 1
  3. Exposant non biaisé \(e=3\) → exposant stocké \(E = e + 127 = 130 = 10000010_2\)
  4. Mantisse stockée = les bits après la virgule : 01000100000000000000000

Codage final : 1 10000010 01000100000000000000000

Applications :

Double précision (64 bits)

En Python, les float utilisent généralement le format IEEE-754 double précision.

Applications :