Convertisseur binaire <--> décimal

Descriptif

Nous utilisons le système décimal (base 10) dans nos activités quotidiennes. Ce système est basé sur une logique à dix symboles, de 0 à 9, avec une unité supérieure (dizaine, centaine, etc.) à chaque fois que dix unités sont comptabilisées. C'est un système positionnel, c'est-à-dire que l'endroit où se trouve le symbole définit sa valeur. Ainsi, le 2 de 523 n'a pas la même valeur que le 2 de 132. En fait 523 est l'abréviation de 5·100+2·10+3. On peut selon ce principe imaginer une infinité de systèmes numériques fondés sur des bases différentes.

En informatique, outre la base 10, on utilise très fréquemment le système binaire (base 2) puisque la logique booléenne est à la base de l'électronique numérique. Deux symboles suffisent: 0 et 1. Cette unité élémentaire ne pouvant prendre que les valeurs 0 et 1 s'appelle un bit (de l'anglais binary digit). Une suite de huit bits s'appelle un octet.

Conversion binaire -> décimal

La conversion du nombre binaire 01001101 en notation décimale peut se faire à l'aide du schéma ci-dessous:

27 26 25 24 23 22 21 20
0 1 0 0 1 1 0 1

Le nombre binaire 01001101 correspond ainsi à 26 + 23 + 22 + 20 = 64 + 8 + 4 + 1 = 77 en notation décimale.

Conversion décimal -> binaire

La conversion binaire de l'entier décimal 77 se fait à l'aide d'une suite de divisions euclidiennes par 2. Le résultat correspond alors à la juxtaposition des restes comme le propose le schéma ci-dessous:

Conversion binaire vers décimal

L'entier décimal 77 correspond ainsi à 1001101 en notation binaire.

A vous de jouer !

Rédigez un programme capable de convertir en binaire tout entier positif décimal et en décimal toute chaîne binaire choisis par l'utilisateur. A ce dessein, votre code devra respecter les points suivants:

  • Une fonction binToDec(str binaire) --> int permettra de convertir de manière récursive toute chaîne en sa représentation décimale correspondante. Cette représentation sera transmise sous forme d'entier.
  • Une fonction decToBin(int entier) --> str permettra de convertir de manière récursive tout entier décimal en sa représentation binaire correspondante. Cette représentation sera transmise sous forme de chaîne de caractères.
  • La partie principale du programme tournera en boucle jusqu'à ce que l'utilisateur entre le message "0" et, à chaque itération, demandera à l'utilisateur quelle forme de conversion il désire puis l'effectuera sur l'entier décimal ou la chaîne binaire transmise.
convertBinDec.gif

Déroulement du programme

(Test | Solution)