Exercices : le binaire

Denis Dréano
INFO1-04

Exercices : le binaire

Objectifs cantonaux : O2.3. Semaine dédoublée (×2, groupes A/B séparés).

Cours complet sur la plateforme Runestone de Cédric Donner : Entraînement — binaire.

Dernière séance d’entraînement sur la représentation binaire avant l’examen. Pas de nouvelle théorie : uniquement des exercices, à faire si possible sans calculatrice, puis à vérifier avec bin(...) / int(..., 2) en Python.

▷ Rappel express

  • Billets binaires : \(2^0=1\), \(2^1=2\), \(2^2=4\), \(2^3=8\), \(2^4=16\), \(2^5=32\), \(2^6=64\), \(2^7=128\), … au maximum une seule carte par valeur.
  • Avec \(n\) bits, on représente exactement \(2^n\) nombres différents, de \(0\) à \(2^n - 1\).

Conversion binaire → décimal

Déterminez la valeur décimale des nombres binaires suivants :

  • \(1000_2\)
  • \(10110_2\)
  • \(100011_2\)
  • \(1111111_2\) (remarquez : c’est \(2^7 - 1\))

Conversion décimal → binaire

En utilisant la méthode des « billets » (prendre le plus grand billet possible, soustraire, répéter avec le reste) :

  • Convertissez 50 en binaire.
  • Convertissez 100 en binaire.
  • Convertissez 255 en binaire — que remarquez-vous sur le nombre de chiffres ?

! Piste pour 255

\(255 = 2^8 - 1\). Un nombre de la forme \(2^n - 1\) s’écrit toujours avec \(n\) chiffres, tous égaux à 1 — c’est le plus grand nombre représentable avec \(n\) bits.

Additions binaires

En posant les cartes et en échangeant deux cartes de même valeur contre une carte de la catégorie supérieure :

  • \(1100_2 + 11_2\)
  • \(10101_2 + 1011_2\)
  • \(1111_2 + 1111_2\)

Dénombrement d’états

  • Un capteur de température ne peut renvoyer que 4 états possibles distincts. Combien de bits faut-il au minimum pour les coder ?
  • Une classe compte 24 élèves, chacun devant recevoir un numéro unique codé en binaire. Combien de bits faut-il au minimum ?
  • Une carte mémoire dispose de 16 millions de circuits mémoire d’un bit. Combien d’états différents cette mémoire peut-elle représenter au total (la réponse peut simplement s’écrire sous forme de puissance de 2) ?

Pour vérifier vos réponses

# décimal → binaire
print(bin(255))

# binaire → décimal
print(int("11111111", 2))