Exercice

L'idée est de reconstruire les fonctions python existantes pour manipuler les écritures des nombres.

Attention les solutions qui sont proposées ici ne sont que des propositions, il peut y avoir d'autres solutions fonctionnelles.

Question

Écrire une fonction entier(b),qui convertit un nombre binaire en nombre décimal.

Indice

Définir le type du nombre binaire passé en paramètre.

Utiliser ensuite le cours sur l'encodage des nombres entiers, utiliser l'expression de calcul donnée sous la forme de puissance de deux pour un nombre binaire.

On peut utiliser une boucle avec un indice qui correspond au nombre de chiffres de b.

Question

Écrire une fonction binaire(n) qui convertit en binaire un nombre entier n donné en base 10.

Indice

On peut appliquer l'algorithme des divisions euclidienne par 2, sachant qu'en Python les commandes suivantes :

  • a%b donne le reste de la division euclidienne de a par b avec a et b deux entiers.

  • a//b donne le quotient de la division euclidienne de a par b avec a et b entiers.

Question

Facultatif (pour ceux qui aurait fait le reste du travail, ce qui suit cette question inclus)

Écrire une fonction hexa(n) qui convertit en hexadécimal un nombre entier n donné en base 10.

Question

Facultatif (pour ceux qui aurait fait le reste du travail, ce qui suit cette question inclus)

Écrire une fonction hexa_dec(n) qui convertit en base 10 un nombre donnée en hexadécimal.

Indice

Attention il faut au préalable construire la correspondance entre les 15 chiffres et leurs valeurs décimales. On pourra faire une fonction pour ça.

On peut part exemple passer par un dictionnaire Python.

Question

Écrire une fonction complément(b) qui calcule le complément à 2 d'un nombre binaire.

Indice

Rappel, il y a deux temps dans le complément à deux :

  1. l'inversion des bits : 0 à 1 et 1 à 0, qu'on peut appeler le complément à 1

  2. le rajout ensuite au nombre obtenu de : 1 !

On pourra donc coder une fonction complément à un (cp1()) par exemple) qu'on appellera dans la fonction ensuite.

Question

Écrire la fonction ajoute(b1,b2,N) qui ajoute les deux nombres b1 et b2 données en binaire et les restitue sur N bits.

Si vous avez réussi à aller au bout de ce TP, alors vous devez comprendre la phrase :

« Le monde se divise en 10 catégories : ceux qui comprennent l'écriture binaire et ceux qui ne la comprennent pas. »