Activité n°4 - icnisnlycee

publicité
Numération (codage binaire)
ICN (seconde)
Programme pour coder
un nombre décimal en binaire
Introduction
Tu as vu comment fonctionnait le codage d’un nombre décimal en binaire.
𝑛𝑜𝑚𝑏𝑟𝑒𝑑𝑒𝑐𝑖𝑚𝑎𝑙 = 𝑎𝑛 ∗ 2𝑛 + 𝑎𝑛−1 ∗ 2𝑛−1 + ⋯ . +𝑎1 ∗ 21 + 𝑎0 ∗ 20
Tu as vu que les an sont les bits représentatif du mot binaire.
On regroupe par 8 bits, ce qui donne un octet.
Ainsi le nombre décimal 23 s’écrit en binaire (base 2) 00010111
Tu vas utiliser l’IDE PyScripter Python)
Saisir une variable
Tu vas avoir besoin de demander un nombre décimal à l’utilisateur.
Tu afficheras ensuite le texte_saisi
Cette commande « + » permet de concaténer (coller des caractères à d’autres caractères, attention à
l’ordre !)
Vérifie le résultat.
Notion de type de variable
Vérifions maintenant que l’on peut effectuer des calculs avec la variable texte_saisi
Prenons l’exemple d’une variable qui est un nombre.
Affichons quel est alors le type de la variable nombre et texte_saisi
Quel est le problème rencontré ?
Regarde alors la signification des types de variables
https://fr.wikibooks.org/wiki/Programmation_Python/Type
Tu as vu que le type « int » correspondait à un nombre entier et « str » à une chaine de caractères
(ensemble de caractères, str pour String).
Version du 15/1/2017
1/
Julien Launay
Numération (codage binaire)
ICN (seconde)
Il faut donc convertir un texte, ton nombre saisi en nombre entier pour pouvoir faire des calculs.
Algorithme de conversion base 10 -> base 2
Il faut maintenant réfléchir comment convertir un nombre en base 10 en un nombre en base 2
(binaire définit par chacun de ces bits).
Donne la conversion en binaire de 30(dec)
Pour cela tu vas faire l’expérience suivante.
Tu vas effectuer des divisions Euclidiennes successives à partir de ton nombre décimal de départ.
Le diviseur va correspondre à sa base, ici la base est 2 bien évidemment.
Au final il suffira de coller les restes sous forme de caractères.
Ainsi pour convertir un nombre en caractère, de la même façon on utilisera texte=str(nombre). Pour
coller (concaténer les caractères obtenus dans le bon sens), il suffira d’utiliser la commande « + »
déjà vue.
Fais tes divisions à partir de l’exemple 30.
Retrouves-tu ton codage du départ ?
Mon algorithme
A toi d’écrire un algorithme pour effectuer cette conversion.
Codage en Python de mon algorithme
Code maintenant en Python ton algorithme.
Tu utiliseras la commande input, la commande « + » qui te permettra de « coller » (concaténer) des
caractères les uns à la suite des autres.
Version du 15/1/2017
2/
Julien Launay
Numération (codage binaire)
ICN (seconde)
Il existe une commande Python qui permet de trouver le reste d’une division Euclidienne « % »
Ainsi 40%7 donne 5
Codage en hexadécimal
Tu viens de découvrir qu’il était possible de représenter une information sous forme de suite de bits.
Pour simplifier l’écriture, on regroupe les bits par paquet de 4 bits.
En effet avec 4 bits on peut coder 16 informations, de 0 à 15.
𝑛𝑜𝑚𝑏𝑟𝑒𝑚𝑎𝑥 = 1 × 23 + 1 × 22 + 1 × 21 + 1 × 20
On utilise aussi un autre codage qui est le codage en base 16 qui permet de représenter les nombres
plus simplement. Tu as vu la base 2 qui utilise 2 symboles (0 et 1) et en base 10 (10 symboles)
La base 16 est l’utilisation de 16 symboles (0,1,2,3,4,5,6,7,8,9,A,B,C,D)
Utilise la même méthode en base 2 pour décomposer un nombre.
Exemple coder en hexadécimal le nombre décimal 180
Tu peux utiliser le tableur avec les fonction =HEXDEC() et =DECHEX()
Notion d’octet
Ce premier paquet va être de les mettre par paquet de 8 bits consécutifs. On appelle cela un octet.
10110100 est un octet qui correspond en décimal à 180 et B4 en hexadécimal.
1011 0100
B
4
Tu peux utiliser le tableur avec les fonction =DECBIN() ou =BINDEC()
Ainsi il faudra 2 symboles en hexadécimal pour coder un octet (2 paquets de 4 bits)
Version du 15/1/2017
3/
Julien Launay
Téléchargement