Aller au contenu

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:

  1. \(\overline{10110}^2 +\overline{1101}^2\)
  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

  1. Donner les représentations en complément à 2 sur quatre bits des entiers 1 et −1.
  2. 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).
  3. 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

  1. 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:

    1. Ecrire 31 en binaire
    2. Ecrire 7 en binaire
    3. Réaliser l'opération 31 - 7 en binaire. Que remarquez vous ?
    4. 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 ?
  2. 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