TD⚓︎
Exercice 1: Binaire: Compter
Compter jusqu'à 16 en binaire
Exercice 2: Binaire: Convertir
Convertir:
Binaire | Décimal |
---|---|
00010010 | |
56 | |
10101101 | |
199 |
Exercice 3: Binaire: Calculer
Calculer:
- \(\overline{10110}^2 +\overline{1101}^2\)
- \(\overline{100111}^2 × \overline{101}^2\)
Exercice 4: Hexadécimal: Compter
Compter jusqu'à 30 en hexadécimal
Exercice 5: Hexadécimal: Convertir
Hexadécimal | Binaire | Décimal |
---|---|---|
10010001 | ||
AF | ||
98 | ||
2B | ||
B2 | ||
11101111 |
Exercice 6: Complément à deux sur 4 bits
- Donner les représentations en complément à 2 sur quatre bits des entiers 1 et −1.
- Vérifier si l’algorithme classique d’addition binaire appliqué à ces représentations donne bien 0 pour l’addition de 1 et de −1 et −2 pour l’addition de −1 et −1 (en excluant la dernière retenue sortante).
- Que donne l’addition des représentations de 7 et 1 sur 4 bits en complément à deux ? Commenter.
Exercice 7: Compléments à deux: justifications
-
Exemple: Pour obtenir la représentation en complément à deux sur 5 bits de -7, on prend la représentation en binaire de 25 (car -7 + 32 = 25). Cela revient donc à faire 32 - 7 ou 31 - 7 + 1:
- Ecrire 31 en binaire
- Ecrire 7 en binaire
- Réaliser l'opération 31 - 7 en binaire. Que remarquez vous ?
- Ajouter enfin 1 au nombre obtenu. D'après la petite introduction à la question, de quel nombre s'agit il en base 2 ? Et en complèment à deux ?
-
Méthode : Pour obtenir la représentation en complément à 2 sur n bits de l’opposé d’un entier naturel, il suffit de prendre le complément de chaque bit de sa représentation binaire (0 → 1 et 1 → 0) et d’ajouter 1. Justifier cet algorithme à partir de la définition de la représentation en complément à 2.
Exercice 8: Compléments à deux: des erreurs
La classe int8 du module numpy permet de créer des entiers signés codés sur 8 bits. Commenter les résultat des exécutions ci-dessous :
>>> import numpy
>>> numpy.int8(127) + numpy.int8(1)
<stdin>:1: RuntimeWarning: overflow encountered in byte_scalars
-128
>>> numpy.int8(-127) + numpy.int8(-2)
<stdin>:1: RuntimeWarning: overflow encountered in byte_scalars
127