Exercices
Compléments à 2
Le tableau suivant correspond à la représentation binaire en complément à 2 sur 4 bits des entiers signés. Recopier et compléter ce tableau.
| Entiers relatifs | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 | 1 |
| 2 | 0 | 0 | 1 | 0 |
| \ldots | \ldots | \ldots | \ldots | \ldots |
Exercices
-
Déterminer la représentation binaire en complément à 2 sur un octet des entiers signés :
$24$ ; $-128$ ; $-2$ ; $-1$ ; $-127$. 2. Quelle plage d'entiers relatifs peut-on représenter en complément à 2 sur un octet ? 3. Donner la représentation sur un octet en complément à 2 du nombre représenté en base 10 par $-37$. 4. Effectuer en binaire l'addition $94 + 38$. Quel est l'entier relatif obtenu en considérant qu'il s'agit d'un codage en complément à 2 sur 8 bits ? Comment appelle-t-on ce problème ?
-
Déterminer le codage binaire en complément à 2 sur un octet des entiers $19$ et $-6$, effectuer en binaire l'addition $19 + (-6)$ et vérifier qu'on obtient le même résultat que $19 - 6 = 13$ en binaire.
-
Déterminer l'entier représenté en complément à 2 sur un octet par :
10000001;11111111;10011100.
Un programme
On considère le code python ci-dessous.
| 🐍 Code Python | |
|---|---|
1 2 3 | |
Quelle est l'affirmation correcte ?
- L'exécution ne s'arrête jamais.
- À la fin de l'exécution,
xvaut-0.000001. - À la fin de l'exécution,
xvaut0.000001. - L'exécution s'arrête sur une
FloatingPointError.
Parmi les nombres suivants, quels sont ceux dont la représentation sous forme de nombre flottant peut être écrite de manière exacte avec un nombre fini de chiffres en base 2 ?
$ 1/4 \quad 1/6 \quad 1/3 \quad 1/7 \quad 1/8 $
Lors de la nouvelle année 2022, un bug du logiciel de messagerie électronique Microsoft Exchange a empêché la livraison de nombreux mails. Le logiciel utilisait un entier signé représenté en complément à deux sur 32 bits pour représenter la date. Les deux premiers chiffres (en partant de la gauche) correspondant à l’année depuis l’an 2000, les deux suivants au mois, etc.
- A l’aide d’une calculatrice, déterminer le plus grand entier qui puisse être représenté en complément à deux sur 32 bits.
- Expliquer pourquoi le bug a eu lieu lors du passage de 2021 à 2022.
-
Il a été proposé comme correction de représenter la date à l’aide d’un entier non signé sur 32 bits. En quelle année cela entrainera à nouveau un bug ?
Cette façon de représenter les dates n’est en général pas utilisé car jugée peu efficace et problèmatique.
Quels sont le plus petit et le plus grand nombre que l'on peut écrire en complément à 2 sur :
- 16 bits
- 32 bits
- 64 bits
Python
Écrire un ensemble de fonctions en python effectuant les opérations suivantes. Les nombres binaires sont représentés sur $N = 8$ bits par des listes de $8$ chiffres 0 ou 1, dont le bit de poids fort est le premier élément de la liste. Vous écrirez avec soin la documentation de chaque fonction et vous écrirez les tests adéquats à l'aide des exemples vus en cours et en exercice. Vous prendrez également soin de gérer les erreurs arithmétiques (dépassement de capacité et résultats erronés par exemple).
binaire(n): renvoie la représentation binaire de l'entier $n$ en complément à 2 sur 8 bits ;complement(b): renvoie le complément à 2 du nombre binaireb;somme(b1, b2): renvoie le nombre binaire résultant de l'addition deb1et deb2;difference(b1, b2): renvoie le nombre binaire résultant de la soustraction deb1àb2;base10(b): renvoie l'entier $n$ dontbest la représentation en complément à 2 sur $8$ bits.
ASCII
Donner le codage en ASCII (en base 10), du message suivant ci-dessous (attention à bien respecter le saut de ligne) :
Hello
World !
Mystere
On considère la fonction mystere dont on donne le code ci-dessous.
| 🐍 Code Python | |
|---|---|
1 2 | |
- Que renvoie
mystere("p")? - Que permet de faire la fonction
mystere?
Recopier et compléter le corps de la fonction suivante :
| 🐍 Code Python | |
|---|---|
1 2 3 4 5 6 7 8 | |
-
Une de ces séries d’octets ne correspond pas à un codage UTF-8, laquelle ?
- 11010101 10111111
- 11110110 10110110 10101010 10010111
- 00111011
- 11101011 10110101
- Quelle affirmation est vraie concernant le codage UTF-8 des caractères ?
- Le codage UTF-8 est sur 1 à 4 octets.
- Le codage UTF-8 est sur 8 octets.
- Le codage UTF-8 est sur 8 bits.
- Le codage UTF-8 est sur 7 bits.
-
Sur combien d’octet sera stocké le message suivant en UTF-8 ?
Ça coûte 2€ ! -
13
- 10
- 17
- 52