Conversion entre base
base 10 : 0 ,1,2,3,4,5,6,7,8, 9
base 2 : 0 ,1
base 8 : 0,1,2,3,4,5,6,7
base 16 : 0, 1,2,3,4,5,6,7,8,9, A ( 10), B (11),
C(12), D(13), E (14),et F(15)
Conversion entre base
chaine chaine
2 2
conv2_10 Conv10_2
entier
conv8_10 Conv10_8
chaine 8 10 8 chaine
conv16_10 Conv10_16
chaine 16 16 chaine
convB_10 Conv10_B
Conversion de la base 10 a la base 2 :
(57)10 = (…………….)2 (18)10 = (………….….)2
Conversion de la base 10 a la base 2 :
En algorithme Python avec chaine
Fonction conver10_2( N :entier ) : chaîne def conver10_2(n):
Début ch=""
ch"" while (n !=0):
Tant que (N ≠0) Faire r= n % 2
r N mod 2 ch=str(r)+ch
chconvch(r) +ch n//=2
N N div2 return ch
Fin Tant Que
retourner ch
Fin
Conversion en utilisant un tableau inversé
Python avec tableau inversé
Procédure conver10_2( N :entier ; @T :Tab ; @ m : entier)
Début
m-1
Tant que (N ≠0) Faire
m m+1
t[m] n mod 2
N N div2
Fin Tant Que
Fin
Exécuter la procédure conver10_2 avec n=17
Conversion de la base 10 a la base 8 :
Exp : 125(10) = ……(8)
Conversion de la base 10 a la base 8 :
En algorithme Python avec chaine
Fonction conver10_8( N :entier ) : chaîne def conver10_8(n):
Début ch=""
ch"" while (n //8 !=0):
Tant que (N ≠0) Faire r= n % 8
r n mod 8 ch=str(r)+ch
chconvch(r) +ch n//=8
N N div8 return ch
Fin Tant Que
retourner ch
Fin
Conversion de la base 10 a la base 16 :
125(10) = ….........(16)
430(10) = ……….(16)
335(10) = ………..(16)
Conversion de la base 10 a la base 16 :
En algorithme Python avec chaine
Fonction conver10_16( N :entier ) : chaîne def conver10_16(n):
Début ch=""
ch"" while n!=0:
Tant que (N ≠0) Faire r=n%16
r n mod 16 if r<=9:
si r<=9 alors ch=str(r)+ch
chconvch(r) +ch else:
sinon ch=chr(r+55)+ch
chchr(r+55) +ch n//=16
finsi return ch
N N div16
Fin Tant Que
retourner ch
Fin
2ème solution 3ème solution
Fonction conver10_16( N :entier ) : chaîne Fonction conver10_16( N :entier ) : chaîne
Début Début
ch"" ch1 « 0123456789ABCDEF"
Tant que (N ≠0) Faire ch""
r n mod 16 Tant que (N ≠0) Faire
si r<=9 alors r n mod 16
chconvch(r) +ch chch1[r] +ch
sinon N N div16
Selon r Fin Tant Que
10 : c "A" retourner ch
11 : c "B" Fin
12 : c "C"
13 : c "D"
14 : c "E"
15 : c "F"
fin selon
ch c +ch
finsi
N N div16
Fin Tant Que
retourner ch
Fin
Forme générale : 10_B
En algorithme Python avec chaine
Fonction conver10_B( N,B :entier ) : chaîne def conver10_B(n,b):
Début ch=""
ch"" while n!=0:
Tant que (N ≠0) Faire r=n%b
r n mod B if r<=9:
si r<=9 alors ch=str(r)+ch
chconvch(r) +ch else:
sinon ch=chr(r+55)+ch
chchr(r+55) +ch n//=b
finsi return ch
N N divB
Fin Tant Que
retourner ch
Fin
Appel : ch2 conver10_B( , ) X(10)=ana(n-1)a(n-2)….a3a2a1a0 (b)
ch8 conver10_B( , )
ch16 conver10_B( , )
Application
Ecrire un script en python qui permet de saisir un entier
naturel n (n>0)et d’afficher son convertion dans la base 2,8
et 16 sous la forme suivantes:
(N)10 = (......)2
(N)10 = (......)8
(N)10 = (......)16
En utilisant la fonction générale de la conversion.
De la base octal à la base décimal: 175
De la base hexadécimal à la base décimal : 14F
De la base B à la base décimal :
18BF
Un chiffre hexadécimal correspond à 4 bits, il suffit de convertir en 4 bits chaque chiffre du
nombre hexadécimal et de les assembler dans le l'ordre.
Exemple : Conversion du nombre Hexadécimal 18BF en Binaire
18BF
====
0001 1000 1001 1111
Le nombre (18BF)16 vaut (0001100010011111)2
Les zéro en bleu ne servent à rien, on doit les supprimer, donc
Le nombre (18BF)16 vaut (1100010011111)2
Le plus grand chiffre octal est 7, qui convertit en binaire, donne 111
Donc un chiffre de l'octal correspond à 3 bits, il suffit de grouper par 3 les chiffres du nombre
binaire puis de convertir chaque groupe on utilisant le système de pondération. L'assemblage
dans l'ordre des chiffres trouvés donne le nombre octal correspondant.
Exemple : Conversion du nombre binaire 1001100101 en Octal
1 001 100 101
====
1*20 0*22 + 0*21+ 1*20 1*22 + 0*21+ 0*20 1*22 + 0*21+ 1*20
====
1145
Le nombre (1001100101)2 = (1145)8
Conversion d'une base B en une base B2
Ecrire un programme modulaire nommé B1_B2, qui permet de convertir un nombre N d’une base B1
en une base B2. Sachant que ( 2 ≤ B1 ≤ 16) et ( 2 ≤ B1 ≤ 16) et (B1 ≠ B2).
Fonction Convert (NB1 : Chaîne; B1, B2 : Entier ) : Chaîne
Début
NB10 Convert_B10 (NB1, B1)
Ch_B2 Convert_B2 (NB10, B2)
retourner Ch_B2
Fin