IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Conversion de décimal en octal


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 156
    Points : 48
    Points
    48
    Par défaut Conversion de décimal en octal
    bonsoir à ts,
    j'eprouve quelques difficultés pour convertir un nombre decimal en base octal.
    Quelqu'un peut il me decrire la demarche à suivre car j'ai trouvé pas mal de liens pour convertir ds d'autres bases mais pas de decimal en octal.
    merci pr vos reponses

    Déplacé depuis le forum Langages en général par Alcatîz

  2. #2
    Membre averti

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 289
    Points : 342
    Points
    342
    Par défaut
    C'est plus pour le forum algorithmique (un modo pour déplacer le topic, SVP ?)...
    Au départ, tu as un nombre, ou sa représentation sous forme de suite de chiffres décimaux ?
    Si c'est directement le nombre, il suffit de faire les divisions successives par 8. Ex: n= 95.
    95 / 8 = 11, et 95 modulo 8 = 7, donc le chiffre des unités en base 8 est 7.
    11 / 8 = 1, 11 modulo 8 = 3, donc le chiffre des "dizaines" en base 8 est 3.
    1 / 8 = 0, 1 modulo 8 = 1, donc le chiffre des "centaines" en base 8 est 1, et on s'arrête là.
    ou 95 = 1 * 8^2 + 3 * 8^1 + 7.

    Si tu démarres avec la suite de chiffres décimaux, il y a peut-être une optimisation possible, mais tu peux facilement retomber sur le cas précédent en le convertissant en nombre.

  3. #3
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Conversion d'une Base10 en BaseN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    variable resultat
    variable reste
    variable nombre10
    variable baseN
    TANT QUE nombre10 >= baseN
       reste <- nombre10 Modulo baseN
       nombre10 <- (nombre10 - reste)/ baseN
       resultat <- reste CONCATENER resultat
    FIN TANT QUE
    resultat<- nombre10 CONCATENER resultat
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 289
    Points : 342
    Points
    342
    Par défaut
    Tout cela marchant dans le cas des nombres positifs... En négatif, il faut adapter un chtouia (convertir la valeur absolue du nombre depart, puis rajouter le signe).

  5. #5
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par alveric
    Tout cela marchant dans le cas des nombres positifs... En négatif, il faut adapter un chtouia (convertir la valeur absolue du nombre depart, puis rajouter le signe).
    Exact, et j'ajouterai egalement attention à la grandeur des nombres de base decimal, prévoir si necessaire un type acceptant les très grands nombre afin d'eviter des erreurs overflow
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  6. #6
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2004
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2004
    Messages : 137
    Points : 116
    Points
    116
    Par défaut Re: Conversion de décimal en octal
    Citation Envoyé par rimbaut
    bonsoir à ts,
    j'eprouve quelques difficultés pour convertir un nombre decimal en base octal.
    Quelqu'un peut il me decrire la demarche à suivre car j'ai trouvé pas mal de liens pour convertir ds d'autres bases mais pas de decimal en octal.
    merci pr vos reponses

    Déplacé depuis le forum Langages en général par Alcatîz
    Ben, je voudrais dire qu'un nombre décimal ça n'existe pas dans un ordinateur...
    Comme dit alveric : "Si c'est directement le nombre, il suffit de faire les divisions successives par 8". Un nombre est un nombre : il a plein de représentations, parmi lesquelles l'octal et le décimal. Mais dans les algorithmes proposés (que je n'ai pas vérifiés, mais je suis sûr qu'ils sont corrects), le "nombre" en question n'est pas là en tant que nombre décimal, mais en tant que nombre tout court. Quand on l'imprime, on peut choisir, puisque ça nous arrange plutôt, de l'imprimer en décimal...

    Lorsque l'on qualifie un nombre de "décimal" donc, on fait référence à sa représentation comme suite finie et ordonnée de chiffres compris entre 0 et 9 (inclus). Si donc on veut transformer un nombre décimal en nombre octal, cela veut dire que l'on veut transformer une suite finie ordonnée de chiffes compris entre 0 et 9 par une autre suite finie ordonnée de chiffres entre 0 et 7 (inclus). Et ce n'est pas ce que font les algorithmes proposés ci-dessus. Ils se contentent de déterminer la représentation octale d'un nombre tout court et non pas d'un nombre décimal (pour preuve, l'algorithme de neguib ne fait pas intervenir le nombre 10 dans son algo, alors qu'évidemment il a besoin du 8 qu'il aura placé dans la variable baseN).

    Cela dit, je suppose que rimbaut veut trouver la représentation octale d'un nombre tout court. Et pour les puissances de 2, il y a plus simple. Pour trouver la représentation octale d'un nombre N, il suffit de prendre successivement les bits du nombre trois par trois. Le premier de la liste sera (N AND 7) (le "ET" binaire bit à bit). Puis on fera sur la variable N un shift à droite de 3 positions, et le second de la liste sera à nouveau (N AND 7) et ainsi de suite. Bien sûr, il faudra prendre garde au bit de signe.

  7. #7
    Membre averti

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 289
    Points : 342
    Points
    342
    Par défaut Re: Conversion de décimal en octal
    Citation Envoyé par ceugniet
    Et pour les puissances de 2, il y a plus simple.
    Tain, chuis un , j'ai meme pas reflechi a ca...
    Remarque, un compilo bien optimisateur traduit un (N mod 2^k) en (N ET 2^(k-1)), a ton avis ?

  8. #8
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2004
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2004
    Messages : 137
    Points : 116
    Points
    116
    Par défaut Re: Conversion de décimal en octal
    Citation Envoyé par alveric
    Citation Envoyé par ceugniet
    Et pour les puissances de 2, il y a plus simple.
    Tain, chuis un , j'ai meme pas reflechi a ca...
    Remarque, un compilo bien optimisateur traduit un (N mod 2^k) en (N ET 2^(k-1)), a ton avis ?
    Un très bon, peut-être bien. Mais si on met tout cela dans une fonction avec un paramètre baseN en paramètre, je doute qu'il puisse savoir à la compilation que la base est une puissance de 2, sauf si on fait de l'inlining, bien sûr.

  9. #9
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Points : 754
    Points
    754
    Par défaut
    par exemple voici un petit code 'Delphi' pour créer un string représentatif d'un nombre entier POSITIF en base n ici n est limité entre 2 et 16. Si n devait être limité aux puissances de 2 il y a des simplifications possibles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    const Ch : array[0..15] of char =
    ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
    function  exprimer_i_en_base_n(n : longint; base : byte) : string;
    var s : string ; b : byte ;
       begin
       if (n <0) or ( base <2) or (base > 16 ) then
          s :='???'
       else
          begin
          s:='';
          while ( n > 0 ) do
             begin
             b := n mod base;
             s:= Ch[b] + s;
             n:= n div base;
             end;
          end;
       exprimer_i_en_base_n :=s
       end;

Discussions similaires

  1. programme de conversion de décimal en binaire et octale
    Par sk8trasher dans le forum Débuter
    Réponses: 3
    Dernier message: 04/06/2012, 20h37
  2. conversion de décimal à binaire
    Par sousou2007 dans le forum C++
    Réponses: 10
    Dernier message: 19/10/2007, 12h33
  3. Conversion Hexa -> décimal
    Par Nemesis007 dans le forum C
    Réponses: 3
    Dernier message: 30/04/2007, 15h51
  4. conversion binaire-décimal sans utiliser le tableau
    Par ahmed doua dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 13/03/2006, 10h54
  5. Conversion hexadécimal -> décimal
    Par botanica dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/10/2005, 09h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo