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 en base 8.


Sujet :

Algorithmes et structures de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Par défaut Conversion en base 8.
    Bonjour,

    Voici mon prbrlm:
    "On considère une représentation des entiers signés sur 16 bits en valeur signée. Dans ce cadre donnez la représentation de (+1615)^10. Exprimer ce résultat en base 8."

    Moi j'ai converti en base 2 ce qui fait: (11001001111)²

    Pour la base 8, on fait des paquet de 3 chiffre donc: 11 001 001 111.
    Mais dans l'énoncer on doit le mettre sur 16 bits, donc on rajoute des 0 jusqu'à obtenir 16 bits ? mais donc on pourra plus faire de paquet de 3 chiffres ?
    0 000 011 001 001 111 => sur 16 bits, et le 0 seul ?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 362
    Par défaut
    Bonjour Hiro84,

    A mon avis, il y a surtout un problème avec l'énoncé...

    Ta méthode de conversion est juste, même si tu n'es pas allé tout à fait au bout :
    11 001 001 111(2) = 3117(8)

    En général, on représente les nombres sur 8 ou 16 bits avec l'hexadécimal, qui a l'avantage de correspondre à une puissance de 2 bits (4 bits). Un nombre sur 16 bits sera donc représenté par 4 chiffres hexa. Dans ton exemple, 064F(16). De cette manière, il n'y a plus à se poser de question sur des bits de gauche manquants.

  3. #3
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Gio,

    S'il reste à gauche un nombre de bits < 3, on ajoute quand même un digit en base 8.

    (Heureusement qu'on peut le faire, la base 8 est (à été ?) privilégiée sur Unix, et qu'aurions nous fait sans cette possibilité ?)

    Donc dans ton exemple, tu ajoutes un 0 devant ton nombre, ou pas, puisque ça ne change rien à la valeur.
    Ce serait évidemment différent s'il restait un 1, car il faudrait bien entendu en tenir compte.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Par défaut
    Oui, mais si je rajoute un 0, on n'est plus en 16 bits alors ?

    J'ai un autre exemple, comment mettre en base 8 un nombre sur 32 bits ?
    Si on fait des paquet de 3 chiffres, à la fin, y'aura des chiffres seul ou à 2 ?

  5. #5
    Membre éclairé
    Étudiant
    Inscrit en
    Août 2007
    Messages
    419
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 419
    Par défaut
    Citation Envoyé par Hiro84 Voir le message
    J'ai un autre exemple, comment mettre en base 8 un nombre sur 32 bits ?
    Si on fait des paquet de 3 chiffres, à la fin, y'aura des chiffres seul ou à 2 ?
    la représentation sur des bits se fait en binaire pas en octal

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Par défaut
    Oui je sais, mais ici on me demande de le mettre à la base 8
    Et aussi en valeur signée.
    car ensuite y'a un 2ème chiffre à faire: (-739)10.
    donc en signée faut mettre un 1 devant mais c'est sur 16 bits, on pourra pas le mettre en base 8 :/

  7. #7
    Membre éclairé
    Étudiant
    Inscrit en
    Août 2007
    Messages
    419
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 419
    Par défaut
    Citation Envoyé par Hiro84 Voir le message
    Oui je sais, mais ici on me demande de le mettre à la base 8
    Et aussi en valeur signée.
    car ensuite y'a un 2ème chiffre à faire: (-739)10.
    donc en signée faut mettre un 1 devant mais c'est sur 16 bits, on pourra pas le mettre en base 8 :/
    d'après l'exercice, on te demande d'exprimer le résultat en différentes bases, mais dès qu'il s'agit de représentation sur des bits, tu le fais en binaire, un bit ne peux contenir un 7 ou un 6.

    sur 16 bits (ou 32 bits...) tu remplis les cases à gauche par des zero comme il a été expliqué plus haut je crois.

    faire des paquets de chiffres est une technique de conversion, et ce n'est pas parce que tu n'as pas un paquet complet que tu dois rajouter des bits

  8. #8
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Hiro84 :
    Oui je sais, mais ici on me demande de le mettre à la base 8
    Et aussi en valeur signée.
    car ensuite y'a un 2ème chiffre à faire: (-739)10.
    donc en signée faut mettre un 1 devant mais c'est sur 16 bits, on pourra pas le mettre en base 8
    On peut parler de représentation en base 8 pour des nombres écrits en binaire pur, donc non signés : le nombre obtenu en groupant les bits par paquet de 3 et en convertissant chaque paquet est effectivement le code du nombre en base 8. Si le paquet de gauche fait moins de 3 bits, il sera complété à gauche par des 0.

    Le problème des valeurs signées est différent :il ne s'agit plus alors de représentation en base 8 mais d'une simple notation condensée de la valeur en binaire du nombre.
    La première question est de savoir quel code binaire tu dois utiliser pour représenter les nombres signés.
    Si tu utilises le code complément à deux, pour écrire ce code en notation octale, tu regroupes toujours les bits par paquet de 3, mais si le paquet de gauche comporte moins de 3 bits, il faut le compléter non par des 0, mais par répétition du bit de signe, de façon à conserver la valeur, puis convertir chaque paquet.
    Par exemple:
    -9 en complément à 2 donne 10111, on devra l'écrire 110111 (qui vaut aussi -9) soit 67 en représentation octale
    et +9 s'écrit 01001 donnera 001001 soit 11 en notation octale

Discussions similaires

  1. besoin d'aide pour fonction de conversion de base
    Par babou54 dans le forum Delphi
    Réponses: 12
    Dernier message: 13/01/2007, 21h06
  2. [Débutant] Conversion de base 10 vers base 16
    Par beegees dans le forum Assembleur
    Réponses: 7
    Dernier message: 30/10/2006, 17h31
  3. conversion de base de donnée
    Par imedg dans le forum Oracle
    Réponses: 1
    Dernier message: 27/08/2006, 12h34
  4. Réponses: 2
    Dernier message: 01/08/2006, 16h55
  5. problème de conversion de base
    Par robertstephanie dans le forum Access
    Réponses: 1
    Dernier message: 24/04/2006, 14h12

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