Conversion décimal <-> binaire
Chaque exercice est fourni avec un fichier Python à compléter et un énoncé « papier » distribué à l'élève et reproduit ci-dessous.
Remarques importantes
-
Les exercices de cette page ne sont pas classés par ordre de « difficulté », cette notion de difficulté étant subjective et dépendante de chaque élève.
-
Les solutions proposées ne sont que des propositions !
Il existe d'autres codes valables pour répondre à chaque problème que ceux proposés ici : il ne faut pas hésiter à les soumettre à votre enseignant pour qu'il vous donne son avis sur les idées mises en oeuvre.
Décimal -> Binaire☘
Écrire le code d'une fonction conv_bin()
qui prend en paramètre un
entier positif n
et renvoie un couple (b, bit)
où :
b
est un tableau d'entiers correspondant à la représentation binaire den
;bit
correspond aux nombre de bits qui constituentb
.
Exemples
>>> conv_bin(9)
([1, 0, 0, 1], 4)
>>> conv_bin(128)
([1, 0, 0, 0, 0, 0, 0, 0], 8)
>>> conv_bin(-1)
AssertionError: Il faut entrer un entier positif ou nul !
Rappels
- l'opérateur
//
donne le quotient de la division euclidienne :5//2
donne2
; - l'opérateur
%
donne le reste de la division euclidienne :5%2
donne1
.
-
Compléter la définition de la fonction
conv_bin()
, sans oublier d’ajouter l’assertion signalée dans l’exemple précédent.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
def conv_bin(n): """ n - Sortie: >>> conv_bin(9) ([1, 0, 0, 1], 4) >>> conv_bin(128) ([1, 0, 0, 0, 0, 0, 0, 0], 8) """ pass if __name__ == '__main__': import doctest doctest.testmod()
-
Compléter le docstring de cette fonction.
- Ajouter au moins deux nouveaux tests avec affichage dans la partie principale
du programme (le
main
).
Une solution possible
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
Binaire -> Décimal☘
On modélise la représentation binaire d'un entier non signé par un tableau
d'entiers dont les éléments sont 0
ou 1
. Par exemple, le tableau
[1, 0, 1, 0, 0, 1, 1]
représente l'écriture binaire de l'entier dont
l'écriture décimale est :
2**6 + 2**4 + 2**1 + 2**0 = 83
À l'aide d'un parcours séquentiel, écrire le code de la fonction
conv_ent()
qui prend en paramètre un tableau dont les éléments sont
0
ou 1
et représentant un entier écrit en binaire. Cette fonction
renvoie l'écriture décimale de l'entier positif correspondant.
Exemples
>>> conv_ent([1, 0, 1, 0, 0, 1, 1])
83
>>> conv_ent([1, 0, 0, 0, 0, 0, 1, 0])
130
>>> conv_ent('10000010')
AssertionError: Il faut entrer un tableau non vide !
-
Compléter la définition de la fonction
conv_ent()
, sans oublier d’ajouter l’assertion signalée dans l’exemple précédent.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
def conv_ent(tab): """ tab - Sortie: >>> conv_ent([1, 0, 1, 0, 0, 1, 1]) 83 >>> conv_ent([1, 0, 0, 0, 0, 0, 1, 0]) 130 """ pass if __name__ == '__main__': import doctest doctest.testmod()
-
Compléter le docstring de cette fonction.
- Ajouter au moins deux nouveaux tests avec affichage dans la partie principale
du programme (le
main
).
Une solution possible
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
Décimal -> Binaire sous forme de chaîne☘
Pour rappel, la conversion d’un nombre entier positif en binaire peut s’effectuer à l’aide des divisions successives comme illustré ici :
La fonction Python binaire()
, basée sur la méthode des divisions
successives doit permettre de convertir un nombre entier positif
en son écriture binaire sous forme de chaîne de caractères.
Exemples
>>> binaire(0)
'0'
>>> binaire(77)
'1001101'
>>> binaire(-1)
AssertionError: Il faut entrer un entier positif ou nul !
-
Compléter la définition de la fonction
binaire()
, sans oublier d’ajouter l’assertion signalée dans l’exemple précédent.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
def binaire(n): """ n - Sortie: >>> binaire(0) '0' >>> binaire(77) '1001101' """ pass if __name__ == '__main__': import doctest doctest.testmod()
-
Compléter le docstring de cette fonction.
- Ajouter au moins deux nouveaux tests avec affichage dans la partie principale
du programme (le
main
).
Une solution possible
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|