Conversion de base

Résolu
burinho -  
eliska21 Messages postés 1 Statut Membre -
Bonjour,

je sais pas si ma question est le bon forum, si c'est pas la cas désolé pour le dérangement.

voilà je viens de lire l'article sur le site des conversion binaire, decimal, octal , et hexadecimal.

voilà j'ai bien compris que si on veux convertir un nombre de base 10 vers une nouvelle base on le divise le nombre par la nouvelle base.

et pour passer de binaire à dec on multiplie par la puissance de sa base.

mais je vois pas comment on fais pour passer par exemple d'une base 8 à à10 ou 2 ou 16.
je me pose les memes questions avec la base 16.

merci de m'eclairer.

15 réponses

  1. Misdrhaal Messages postés 49 Statut Membre 16
     
    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 !!!
    12
    1. HAMZA007
       
      MERCI BEAUCOUP
      0
    2. hamadi laabidi Messages postés 1 Statut Membre
       
      comment fait un algorithme de conversion de base 10 à base 16
      0
    3. bob
       
      même chose mais apres 9 on y vas avec des lettre exemple A=10 B=11 C=12 ...
      0
    4. SCHTEIN
       
      Ecrire un algorithme qui permet de convertir en base deux un nombre exprimé en base dix
      0
  2. random Messages postés 1612 Statut Membre 155
     
    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
    6
    1. burinho@yahoofr
       
      tiens très interressant ce que tu dis car moi pour passer de hexa

      2F3 --> j'aurais convertie en base 2 --> et convertie de base2 à base10.
      0
      1. random Messages postés 1612 Statut Membre 155 > burinho@yahoofr
         
        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
        0
  3. burinho
     
    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.
    6
  4. random Messages postés 1612 Statut Membre 155
     
    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

    3
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut,

      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 ~]$
      
      0
      1. vaya > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
         
        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
        0
      2. cocoggu > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
         
         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
        0
    2. eliska21 Messages postés 1 Statut Membre
       
      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
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. burinho
     
    >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
    1
    1. T
       
      plutot (2 *16^2) + (15 * 16^1) + (3 * 16*0)
      de la on a : (2 * 256) + (15 * 16) + ( 3 * 1)

      ce qui donne 512 + 240 + 3 = 755
      0
  7. JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention   859
     
    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
    1
  8. arador
     
    Bonjour,
    je voudrais savoir quel est le programme en c++ qui permet de passer de la base binaire vers une autre
    0
  9. loulitta
     
    svp je veux l'algorithme de la conversion du base 2 a la base 8.aidez moi svp
    0
  10. petite info Messages postés 65 Statut Membre 10
     
    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
    0
  11. milliondollarbaby Messages postés 3 Statut Membre
     
    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.
    0
  12. joopma
     
    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.
    0
  13. petite info Messages postés 65 Statut Membre 10
     
    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
    0
  14. imen
     
    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
    0
  15. Branham
     
    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
    0
    1. salma
       
      salut
      0
    2. salma
       
      ben j'ai rien compris ,je veux bien un programme du décimal en binaire claire en langage c
      0