Question 1 - Écrire une fonction est_valide
qui prend en paramètre une chaine de caractères représentant un nombre en base 2. Cette fonction retourne True
si le nombre est valide et False
si le nombre est invalide.
def est_valide(binaire:str) -> bool:
'''
>>> est_valide("100010101")
True
>>> est_valide("1010401034")
False
'''
Question 2 - Écrire une fonction est_pair
qui prend en paramètre une chaine de caractères représentant un nombre en base 2. Cette fonction retourne True
si le nombre passé en paramètre est pair ou Fasle
si le nombre passé en paramètre est impair.
def est_pair(binaire:str) -> bool:
'''
>>> est_pair('1001')
False
>>> est_pair('1010')
True
'''
Question 3 - Écrire une fonction deux_puissance
qui retourne la puissance de deux associée au rang passé en paramètre.
def deux_puissance(rang:int) -> int:
'''
>>> deux_puissance(0)
1
>>> deux_puissance(1)
2
>>> deux_puissance(2)
4
'''
Question 4 - A l'aide des fonctions précédentes, écrire une fonction binaire_en_decimale
qui prend en paramètre une chaine de caractères représentant un nombre en base 2. Cette fonction retourne la valeur décimale du nombre passé en paramètre. On vérifiera que ce nombre binaire est valide.
Pour vous aider, on peut se baser sur l'algorithme suivant.
def binaire_en_decimale(binaire:str) -> int:
'''
>>> binaire_en_decimale("1")
1
>>> binaire_en_decimale("1010")
10
>>> binaire_en_decimale("1001")
9
'''
Question 1 - Écrire une fonction division_euclidienne
qui prend en paramètre 2 entiers et retourne le quotient et le reste obtenu lorsque l'on divise le premier paramètre par le deuxième. La division par 0 retourne None
.
def division_euclidienne(nombre:int, diviseur:int) -> tuple :
'''
>>> division_euclidienne(6,3)
(2,0)
>>> division_euclidienne(10,4)
(2,2)
>>> division_euclidienne(6, 0)
None
'''
Question 2 - A l'aide de l'algorithme de la division euclidienne et des fonctions précédentes, écrire une fonction decimale_en_binaire
qui prend en paramètre un entier et retourne sa représentation en base 2.
Pour vous aider, on peut se baser sur l'algorithme suivant.
def decimale_en_binaire(nombre:int) -> str:
'''
>>> decimale_en_binaire(16)
'10000'
>>> decimale_en_binaire(31)
'11111'
'''
Question 1 - Écrire une fonction symbole_hexa
qui prend en paramètre un nombre entier en base 10 et retourne le symbole hexadécimal correspondant au nombre passé en paramètre.
def symbole_hexa(nombre:int) -> str:
'''
>>> symbole_hexa(1)
'1'
>>> symbole_hexa(10)
'A'
'''
Question 2 - En utilisant les questions précédentes, écrire une fonction decimal_en_hexa(nombre:int)
qui prend en paramètre un nombre entier en base 10 et retourne son équivalent en hexadécimal sous la forme d'une chaine de caractères.
def decimal_en_hexa(nombre:int) -> str :
'''
decimal_en_hexa(2019)
'7E3'
decimal_en_hexa(8)
'8'
'''
Question 1 - En vous inspirant des questions précédentes, écrire une fonction decimale_en_base_n
qui prend en paramètre 2 entiers représentant un nombre entier en base 10 et une base et retourne la représentation du nombre dans la base donnée en paramètre.
def decimal_en_base_n(decimal:int, base:int) --> str:
'''
decimal_en_base_n(10,2)
'1010'
decimal_en_base_n(10,8)
'12'
decimal_en_base_n(24,7)
'33'
'''
Question 1 - Écrire une fonction bits_necessaires
qui prend en paramètre un nombre entier en base 10 et retourne le nombre de bit nécessaires pour le représenter en base 2.
def bits_necessaire(nombre:int) --> int :
'''
>>> bits_necessaires(5)
3
>>> bits_necessaires(16)
5
'''
Question 1 - Essayer les fonctions bin
, int
et hex
du langage Python pour effectuer des conversions entre chaque base.