#!/usr/bin/env python # coding: utf-8 # # Conversions d'entiers - SUJET # **Ressources** : # # --- # # **Sommaire** #
    #
  1. Présentation
  2. #
  3. Exercices #
      #
    1. Conversions binaire <-> hexadécimal
    2. #
    3. Conversion binaire -> décimal
    4. #
    5. Nombre de bits pour coder un nombre décimal en binaire (complément à 2) ?
    6. #
    7. Conversion binaire (complément à 2) -> décimal
    8. #
    #
  4. #
# # --- # ## 1. Présentation # # # # # # #
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.
# In[1]: # Exemples print(hex(0b01010101010101)) print(bin(0x1234)) # ## 2. Exercices # ### 2.A Conversions binaire <-> hexadécimal # > **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()**. # In[2]: # Vérification # A compléter # ### 2.B Conversion binaire -> décimal # > **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 # In[3]: # A compléter def entier(b:list)->int: pass b=[1,0,0,0,1,1,1,1] entier(b) # ### 2.C Nombre de bits pour coder un nombre décimal en binaire (complément à 2) ? # # **Ressource** : # > **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()** # In[4]: # 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 # In[5]: # A compléter def nb_bits(n:int)->int: pass # ### 2.D Conversion binaire (complément à 2) -> décimal # # **Ressource** : # > **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) # In[6]: # A compléter def complementa2(b:list)->int: pass b=[1,0,0,0,1,1,1,1] print("Compément à 2 =>",complementa2(b)) # In[ ]: