Transcodage : changement de base

Transcodage : depuis toutes les bases vers le décimal

Définition

Passer de l'écriture en base b d'un nombre à son écriture décimale est aisé, il suffit de faire la somme de la multiplication de chaque chiffre d'indice k par son poids correspondant bk (b étant la base d'origine).

ExempleHexadécimal vers Décimal

On préalable, on prendra soin de transcoder les lettres A à F en décimal (de 10 à 15) :

  • A vaut 10

  • B vaut 11

  • C vaut 12

  • D vaut 13

  • E vaut 14

  • F vaut 15.

(FA9)16= 15 x 162 + 10 x 161 + 9 x 160 = 3840 + 160 + 9 = (4009)10

Transcodage : depuis le décimal vers les autres bases

Méthode

Pour convertir un nombre (N)10 écrit en base 10 dans la base b, il faut effectuer des divisions euclidiennes successives, d'abord de N par b puis des quotients obtenus par b jusqu'à ce que le quotient soit 0. Les restes successifs sont ensuite écrits du dernier au premier de gauche à droite.

RappelDivision euclidienne

a et b sont deux entiers naturels, avec b non nul. On appelle division euclidienne de a par b la division donnant un quotient et un reste entiers tels que 0 ⩽ r < b .

Cette division « entière » conduit à l'égalité : a = b x q + r

Ainsi, on aura un reste égal à 0 ou 1 si on transcode en binaire, ou un reste compris entre 0 et 15 si on transcode en hexadécimal.

En Python, on obtient :

  • le quotient de a par b avec l'instruction : q = a // b

  • le reste de a par b avec l'instruction : r = a % b

ExempleDécimal vers Binaire

Ainsi, si on veut trouver un résultat en binaire, on va diviser par 2. Si on veut de l'hexadécimal, on va diviser par 16.

Division euclidienneInformations

Le résultat sera donc (77)10 = (1001101)2 (lecture de bas vers le haut des restes)