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
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.
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 :boulet:, 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 ?
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 :boulet:, 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.