Sommaire
Pour manipuler des séquences de bits, de longueur arbitraire, on utilise la notation 0b devant le nombre binaire. Pour manipuler une valeur hexadécimale, on l'a fait précédée de 0x. Python dispose également des fonctions built-in (natives) bin() et hex() pour convertir des valeurs en base 2 et en base 16. |
# Exemples
print(hex(0b01010101010101))
print(bin(0x1234))
0x1555 0b1001000110100
Activité 1. Convertissez 16FE16 en binaire et 000011011110100112 en hexadécimal sur le document réponse. Formatez votre réponse sur 2 octets. Vérifiez vos résultats avec les fonctions built-in bin() et hex().
# Vérification
# A compléter
Activité 2. Ecrivez une fonction entier(b) qui convertit en base 10 un nombre binaire b donné sous la forme d'un tableau de taille quelconque ne contenant que des chiffres 0 et 1, et tel que le bit de poids fort se trouve dans la case d'indice 0. Le nombre n est supposé représenter un nombre positif.
Résultat attendu pour b=[1,0,0,0,1,1,1,1]
Valeur affichée : 143
# A compléter
def entier(b:list)->int:
pass
b=[1,0,0,0,1,1,1,1]
entier(b)
Activité 3. Combien de bits sont nécessaires pour coder 12695 et -459872 en complément à 2 ? Rédigez sur le document réponse. Vérifiez avec la fonction buit-in bin()
# Vérification
# A compléter
Activité 4. Ecrivez une fonction nb_bits(n) qui renvoie le nombre de bits utilisés pour coder un nombre binaire en complément à 2.
Résultat attendu pour n = -459872
Texte affiché : Il faut 20 bit(s) pour coder -459872
# A compléter
def nb_bits(n:int)->int:
pass
Activité 5a. Ecrivez l'algorithme d'une fonction complementa2(b) qui calcule le complément à 2 d'un nombre binaire N = bn-1 bn-2,..., b0 stocké dans un tableau b contenant uniquement les chiffres 0 et 1. La fonction renverra un nouveau tableau de même taille que b.
Rédigez sur le document réponse.
Activité 5b. Codez la fonction complementa2(b) et utilisez-la pour convertir en décimal un nombre binaire codé en complément à 2.
Résultat attendu pour N2 = 10001111 c'est à dire b=[1,0,0,0,1,1,1,1]
Texte affiché
Compément à 2 => [0, 1, 1, 1, 0, 0, 0, 1 ]
La valeur décimale de N est égal à -113
Notes
Pour parcourir un tableau tab dans l'ordre croissant de ses indices i : for i in range(len(tab))
Pour parcourir un tableau tab dans l'ordre décroissant de ses indices i : for i in range(-1,-(len(tab)+1),-1)
# A compléter
def complementa2(b:list)->int:
pass
b=[1,0,0,0,1,1,1,1]
print("Compément à 2 =>",complementa2(b))
Compément à 2 => None