Quel intervalle d'entiers relatifs peut-on représenter avec des mots de 8 bits? Combien sont-ils
?
Même question avec des mots de 32 bits et 64 bits.
Complément à 2 sur un octet
Trouver la représentation binaire sur huit bits des entiers relatifs 0 et −128.
Trouver la représentation décimale des entiers relatifs dont la
représentation binaire sur huit bits est 0000 0000 et 1000 0000.
Calculer la représentation binaire sur huit bits de l’entier relatif −16, puis de son opposé.
Représenter les entiers relatifs 96 et 48 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 ?
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 15−7.
Quels sont les nombres minimum et maximum que l'on peut représenter?
On peut représenter des nombres allant de −215 à 215−1, soit l'intervalle: [−32768;32767].
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
Créer un programme qui demande un nombre à encoder et un nombre n de bits d'encodage, et qui
renvoie la représentation binaire du nombre en complément 2n 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 n 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.
Créer un programme qui demande un code binaire à décoder écrit sur n bits, et qui
renvoie la valeur décimale de ce nombre par décodage du nombre en complément 2n.
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().