Conversion de base
Résolu/Fermé
burinho
-
9 janv. 2006 à 07:47
eliska21 Messages postés 1 Date d'inscription mardi 3 mai 2016 Statut Membre Dernière intervention 3 mai 2016 - 3 mai 2016 à 15:25
eliska21 Messages postés 1 Date d'inscription mardi 3 mai 2016 Statut Membre Dernière intervention 3 mai 2016 - 3 mai 2016 à 15:25
15 réponses
Misdrhaal
Messages postés
49
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
23 février 2006
16
9 janv. 2006 à 13:09
9 janv. 2006 à 13:09
c'est une méthode assez scolaire mais moins rapide que la division, elle a pour moi juste le mérite de faire travailler le cerveau sur deux bases :
2F3 on prend chaque digit qu'on exprime en base 2 sur un mot de 4 bits
2 : 0010
F : 1111
3 : 0011
ce qui donne 001011110011 donc 1011110011 (ce qui en base 10 donne 755)
La vitesse qu'on gagne en transcrivant 16->2 est perdue en convertissant 2->10
Par contre c'est une excellente méthode pour faire du passage de n'importe quelle base(puissance de 2) en binaire !!!
2F3 on prend chaque digit qu'on exprime en base 2 sur un mot de 4 bits
2 : 0010
F : 1111
3 : 0011
ce qui donne 001011110011 donc 1011110011 (ce qui en base 10 donne 755)
La vitesse qu'on gagne en transcrivant 16->2 est perdue en convertissant 2->10
Par contre c'est une excellente méthode pour faire du passage de n'importe quelle base(puissance de 2) en binaire !!!
random
Messages postés
1612
Date d'inscription
vendredi 26 novembre 2004
Statut
Membre
Dernière intervention
30 mars 2006
155
9 janv. 2006 à 10:11
9 janv. 2006 à 10:11
le mieux est de diposer de deux fonctions
l'une de codage à partir de la base 10
l'autre de décodage à partir d'une base quelconque vers la base 10
soit à coder 755 en base 16
755/16= 47 reste 3
47//16=2 reste 15
2/16=0 reste 2
le nombre cherché est 2 15 3, 15 en base 16 vaut F
la solution est donc 2F3
la transcription est immédiate
(2*16*16)+(15*16)+3=755
l'une de codage à partir de la base 10
l'autre de décodage à partir d'une base quelconque vers la base 10
soit à coder 755 en base 16
755/16= 47 reste 3
47//16=2 reste 15
2/16=0 reste 2
le nombre cherché est 2 15 3, 15 en base 16 vaut F
la solution est donc 2F3
la transcription est immédiate
(2*16*16)+(15*16)+3=755
random
Messages postés
1612
Date d'inscription
vendredi 26 novembre 2004
Statut
Membre
Dernière intervention
30 mars 2006
155
>
burinho@yahoofr
10 janv. 2006 à 11:02
10 janv. 2006 à 11:02
sauf qu'en base 2 il n'y a pas de f ce qui veut dire que tu lis
ta base 2 en base 16 ce qui est très productif mais non général
ta base 2 en base 16 ce qui est très productif mais non général
donc si je comprend bien :
de octal et hexa vers --> dec ( on mutipliepar sa base elevé à la puissance)
de octal et hexa vers binaire -->(on utilise la division 2 euclienne)
mais est ce que on peut passer de octal vers hexa ou l'inverse sans passer par la base 2.
de octal et hexa vers --> dec ( on mutipliepar sa base elevé à la puissance)
de octal et hexa vers binaire -->(on utilise la division 2 euclienne)
mais est ce que on peut passer de octal vers hexa ou l'inverse sans passer par la base 2.
random
Messages postés
1612
Date d'inscription
vendredi 26 novembre 2004
Statut
Membre
Dernière intervention
30 mars 2006
155
10 janv. 2006 à 10:59
10 janv. 2006 à 10:59
oui les solutions que vous proposez sont parfaites pour les puissances de 2 et donc en informatique
mais si vous voulez une autre base par exemple 97
ca devient plus difficile
mais si vous voulez une autre base par exemple 97
ca devient plus difficile
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
11 janv. 2006 à 00:15
11 janv. 2006 à 00:15
Salut,
En base 97, 97 = 10. Voilà un petit code en C. Tu peux tester.
Exemples :
En base 97, 97 = 10. Voilà un petit code en C. Tu peux tester.
#include <stdio.h> #include <string.h> main() { int nbr, base ,numero ; int reste,quotient,diviseur ; char affichage[20],convert[2],temp[20] ; printf("Nombre à convertir :") ; scanf("%d",&nbr) ; numero = nbr ; printf("Base de conversion :") ; scanf("%d",&base) ; diviseur=base ; quotient=1 ; convert[1]='\0' ; affichage[0]='\0' ; while (quotient != 0) { quotient = nbr / diviseur ; reste = nbr % diviseur ; nbr = quotient ; if ((reste >= 0) && (reste <= 9)) convert[0] = reste+48 ; else convert[0] = reste+55 ; strcpy(temp,convert) ; strcat(temp,affichage) ; strcpy(affichage,temp) ; } printf("%d en base %d = %s\n",numero,base,affichage) ; }à toi d'adapter
Exemples :
[lamitest@localhost ~]$ ./convesion_base Nombre à convertir :755 Base de conversion :16 755 en base 16 = 2F3 [lamitest@localhost ~]$ ./convesion_base Nombre à convertir :755 Base de conversion :2 755 en base 2 = 1011110011 [lamitest@localhost ~]$ ./convesion_base Nombre à convertir :97 Base de conversion :97 97 en base 97 = 10 [lamitest@localhost ~]$ ./convesion_base Nombre à convertir :98 Base de conversion :97 98 en base 97 = 11 [lamitest@localhost ~]$ ./convesion_base Nombre à convertir :200 Base de conversion :97 200 en base 97 = 26 [lamitest@localhost ~]$ ./convesion_base Nombre à convertir :1333 Base de conversion :97 1333 en base 97 = D [lamitest@localhost ~]$ ./convesion_base Nombre à convertir :2789 Base de conversion :97 2789 en base 97 = S [lamitest@localhost ~]$ ./convesion_base Nombre à convertir :68979 Base de conversion :97 68979 en base 97 = 7WC [lamitest@localhost ~]$ ./convesion_base Nombre à convertir :1200 Base de conversion :97 1200 en base 97 = C[ [lamitest@localhost ~]$
vaya
>
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
19 mai 2008 à 10:55
19 mai 2008 à 10:55
bjr
a trop bien ton programme marche a merveille et il est super simple a comprendre enfin je suis rassuré car avant pour le mm genre de calcul je n'y voyé rien du tout . par contre quelle sont les modifications a faire pour avoir le programme convertisseur de base X en base 10
si tu pourrais me l'envoié je te seré infiniment reconnaissant
aurevoir
a trop bien ton programme marche a merveille et il est super simple a comprendre enfin je suis rassuré car avant pour le mm genre de calcul je n'y voyé rien du tout . par contre quelle sont les modifications a faire pour avoir le programme convertisseur de base X en base 10
si tu pourrais me l'envoié je te seré infiniment reconnaissant
aurevoir
cocoggu
>
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
24 nov. 2009 à 10:46
24 nov. 2009 à 10:46
if ((reste >= 0) && (reste <= 9)) convert[0] = reste+48 ; else convert[0] = reste+55 ;
Je pense que l'instruction du else est plutot :
convert[0] = reste + 65
En effet la lettre A correspond au caractere 65 dans la table ASCII et non 55
eliska21
Messages postés
1
Date d'inscription
mardi 3 mai 2016
Statut
Membre
Dernière intervention
3 mai 2016
3 mai 2016 à 15:25
3 mai 2016 à 15:25
bonjour
c'est possible de m'expliquer à propos du
convert[0] = reste+48 et le +55 car c'est la premiere fois que je vois cette ecriture
cordialement
c'est possible de m'expliquer à propos du
convert[0] = reste+48 et le +55 car c'est la premiere fois que je vois cette ecriture
cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
>la transcription est immédiate
>(2*16*16)+(15*16)+3=755
en faite après réfléxion de la solution de "random" ce n'est rien d'autre que
2F3 -> 2*16^2 +16^1 +3^0
>(2*16*16)+(15*16)+3=755
en faite après réfléxion de la solution de "random" ce n'est rien d'autre que
2F3 -> 2*16^2 +16^1 +3^0
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
10 janv. 2006 à 02:47
10 janv. 2006 à 02:47
bonsoir,
un p'tit délire insomniaque en forme de réponse :
pour passer de l'octal à l'héxa, il suffit de raisonner sur des nombres octaux à 4 chiffres (de 0 à 7777) qui s'écriront donc avec 3 chiffres en héxa (de 0 à FFF).
La généralisation à un nombre quelconque se fera par récursivité.
si tu prends un nombre octal O4.O3.O2.O1 (les Oi sont des chiffres de 0 à 7) et si tu considères sa représentation héxa H3.H2.H1 (les Hi sont des chiffres de 0 à F) alors :
H1=O1 + 8*Mod(O2;2)
H2=Int(O2/2) + Mod(4*O3;16)
H3=2*O4 + Int(O3/4)
Mod(nb ; diviseur) est le reste de la division de nb par diviseur et int( ) est la partie entière.
Pour l'hexa vers l'octal, c'est pareil..... mais dans l'autre sens (:-)
cordialement
un p'tit délire insomniaque en forme de réponse :
pour passer de l'octal à l'héxa, il suffit de raisonner sur des nombres octaux à 4 chiffres (de 0 à 7777) qui s'écriront donc avec 3 chiffres en héxa (de 0 à FFF).
La généralisation à un nombre quelconque se fera par récursivité.
si tu prends un nombre octal O4.O3.O2.O1 (les Oi sont des chiffres de 0 à 7) et si tu considères sa représentation héxa H3.H2.H1 (les Hi sont des chiffres de 0 à F) alors :
H1=O1 + 8*Mod(O2;2)
H2=Int(O2/2) + Mod(4*O3;16)
H3=2*O4 + Int(O3/4)
Mod(nb ; diviseur) est le reste de la division de nb par diviseur et int( ) est la partie entière.
Pour l'hexa vers l'octal, c'est pareil..... mais dans l'autre sens (:-)
cordialement
Bonjour,
je voudrais savoir quel est le programme en c++ qui permet de passer de la base binaire vers une autre
je voudrais savoir quel est le programme en c++ qui permet de passer de la base binaire vers une autre
petite info
Messages postés
54
Date d'inscription
jeudi 20 mars 2008
Statut
Membre
Dernière intervention
23 mars 2009
10
30 mars 2008 à 21:50
30 mars 2008 à 21:50
bonjorno every body,
bon je veut un programme qui convrti un nombre de base quelconque a la base 10
bon j'ai essayé et mon programme peut convertir les nombrede la base 10 a n'importe quel base
et merci d'avance
et veuillez je vous prie de b1 vouloir m'aidez
BY
bon je veut un programme qui convrti un nombre de base quelconque a la base 10
bon j'ai essayé et mon programme peut convertir les nombrede la base 10 a n'importe quel base
et merci d'avance
et veuillez je vous prie de b1 vouloir m'aidez
BY
milliondollarbaby
Messages postés
3
Date d'inscription
vendredi 4 avril 2008
Statut
Membre
Dernière intervention
28 janvier 2009
4 avril 2008 à 12:58
4 avril 2008 à 12:58
bonjour a tous j ai un gros probleme avec les conversion d une base a une autre notemment de base 2 vers les autres et base 10 aussi,j ai vraiment besoin d aide,j ai cherche sur internet mais je n ai pas trouver de bon site qui explique bien,j ai une interro mercredi il faut que je maitrise ca avant,svp si qqun peut bien m expliquer ou me donner un site ou quoi ce serait gentil,je vous remercie.
Bonjour a tous.
Salut petite info est ce que peux avoir ton programme qui permet la conversion un nombre en base 10 vers quelconque base?
merci d'avance
joopma.
Salut petite info est ce que peux avoir ton programme qui permet la conversion un nombre en base 10 vers quelconque base?
merci d'avance
joopma.
petite info
Messages postés
54
Date d'inscription
jeudi 20 mars 2008
Statut
Membre
Dernière intervention
23 mars 2009
10
25 avril 2008 à 15:06
25 avril 2008 à 15:06
slt joopma
oui j'ai le programme qui converti de la base 10 a n'importe quel base mais tout d'abord il faut essayé toi mme ok?
et apres je te le donnerai le mien
d'acord
et bon courage
oui j'ai le programme qui converti de la base 10 a n'importe quel base mais tout d'abord il faut essayé toi mme ok?
et apres je te le donnerai le mien
d'acord
et bon courage
Tu peux également checker le code javascript de ce convertisseur de bases :
http://1001widgets.free.fr/numberBaseConverter/
cdt
http://1001widgets.free.fr/numberBaseConverter/
cdt
slt je sais pas comment fair un programme en pascal pour faire la convertion d'un nombre n de base 1 vers le base 2 et merci d'avance
Bon ecoute ce n'est pas compliqué exemple
(100110101000)2 en base 16 ,tu regroupes 4 bits à chaque fois c'est à dire
1001 1010 1000 ET ensuite 1001 correspond à 9 en base 16 ,1010 correspond à 10 donc A ,1000 correspond à 8 d'ou 9A8
(56)8 en base 10 ,tu fais 6*8^0 + 5*8^1 d'ou 46 on verfie faisont l'inverse
46 modulo 8 =6 et on a 5 comme quotient ca fait 56 ,tu commence à ecrire de droite à gauche
(100110101000)2 en base 16 ,tu regroupes 4 bits à chaque fois c'est à dire
1001 1010 1000 ET ensuite 1001 correspond à 9 en base 16 ,1010 correspond à 10 donc A ,1000 correspond à 8 d'ou 9A8
(56)8 en base 10 ,tu fais 6*8^0 + 5*8^1 d'ou 46 on verfie faisont l'inverse
46 modulo 8 =6 et on a 5 comme quotient ca fait 56 ,tu commence à ecrire de droite à gauche
10 déc. 2008 à 17:53
19 mai 2011 à 20:51
28 mai 2011 à 19:49
23 avril 2014 à 17:55