Exercices

Chapitre 2: Représentation des entiers relatifs

Intervalles de valeurs

  1. Quel intervalle d'entiers relatifs peut-on représenter avec des mots de 8 bits? Combien sont-ils ?
  2. Même question avec des mots de 32 bits et 64 bits.

Complément à 2 sur un octet

  1. Trouver la représentation binaire sur huit bits des entiers relatifs 00 et 128-128.
  2. Trouver la représentation décimale des entiers relatifs dont la représentation binaire sur huit bits est 0000 0000 et 1000 0000.
  3. Calculer la représentation binaire sur huit bits de l’entier relatif 16-16, puis de son opposé.
  4. Représenter les entiers relatifs 9696 et 4848 en binaire sur huit bits. Ajouter les deux nombres binaires obtenus en utilisant l’algorithme de l’addition binaire. Quel est l'entier relatif obtenu ? Pourquoi est-il négatif ?
  5. Expliquer comment faire une soustraction de deux nombres binaires sur huit bits à partir du calcul de l’opposé et de l’algorithme de l’addition binaire. Calculer ainsi 15715 - 7.

Informatique et sciences du numérique Spécialité ISN en terminale S - Avec des exercices corrigés et des idées de projets par Gilles Dowek

Coder sur 16 bits des entiers relatifs

Dans cet exercice, on utilise un codage en complément à 2162^{16} sur 2 octets.

  1. Quels sont les nombres minimum et maximum que l'on peut représenter?
  2. Compléter le tableau suivant:

Base 10

Complément à 2

-1023

-1024

-1

0

-32768

0000 0000 1000 0000

0111 1111 1111 1111

1000 0000 1000 0001

Prépabac NSI aux éditions Hatier

Correction exercice 3 chapitre P2C2

  1. Quels sont les nombres minimum et maximum que l'on peut représenter?

On peut représenter des nombres allant de 215-2^{15} à 21512^{15} -1, soit l'intervalle: [32 768;32 767].[-32~768; 32~767].

  1. Compléter le tableau suivant:

Base 10

Complément à 2

-1023

1111 1100 0000 0001

-1024

1111 1100 0000 0000

-1

1111 1111 1111 1111

0

0000 0000 0000 0000

-32768

1000 0000 1000 0000

128

0000 0000 1000 0000

32 767

0111 1111 1111 1111

-32 767

1000 0000 1000 0001

Codage et décodage en Python

  1. Créer un programme qui demande un nombre à encoder et un nombre nn de bits d'encodage, et qui renvoie la représentation binaire du nombre en complément 2n2^n de ce nombre.

    P.ex:

    • si vous demandez le codage de -1 sur 4 bits, le programme affiche: "1111".
    • si vous demandez le codage de 5 sur 4 bits, le programme affiche: "0101".

    Pour simplifier, on supposera que l'utilisateur ne demande pas l'impossible, et que le nombre demandé peut être codé sur le nombre de bits donnés.

Aides:

  • Pour obtenir la représentation binaire d'un nombre entier naturel on utilise: bin(nombre)[2:].

    P.ex: bin(127)[2:] renvoie '1111111'

  • Pour parcourir un à un les éléments d'une chaîne de caractère, on utilise la syntaxe for élément in chaine_de_caractères:

    P.ex:

    for chiffre in '1111111':
      print(chiffre)
  • Pour forcer l'écriture sur nn bits d'un nombre binaire, on utilise: '{:0nd}'.format(nombre)

    P.ex: '{:08d}'.format(1000) renvoie '00001000'

Une des difficultés notables de cet exercice est qu'il faut traiter les nombres binaires comme des str. Réfléchissez bien aux types utilsés.

  1. Créer un programme qui demande un code binaire à décoder écrit sur nn bits, et qui renvoie la valeur décimale de ce nombre par décodage du nombre en complément 2n2^n.

    P.ex:

    • si vous demandez le décodage de "1111", le programme affiche: -1.
    • si vous demandez le décodage de "0101", le programme affiche: 5.

    le codage binaire donnant implicitement la valeur de n pour le complément à 2.

Aide

Pour obtenir la longueur d'une chaîne de caractères, on utilise la fonction len().

P.ex: len("0101") renvoie 4.