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

 C Discussion :

Afficher un décimal en binaire


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 193
    Par défaut Afficher un décimal en binaire
    Bonjour,

    Je suis en train de faire un projet qui consiste à convertir des instructions en langage assembleur en langage machine.

    Une instruction en langage machine s'écrit de la manière suivante
    5 bits pour le code opératoire
    5 bits pour le registre de destination
    5 bits pour le registre Rn
    1 bit pour la valeur immédiate
    16 bits pour le registre Rm

    J'ai réussi à extraire les élements dans des variables int :
    int code, int dest , int valeurRn, int valeur imm, int valeurRm (ce qui a été un travail dur )

    Mais le problème est que l'on doit transformer ces valeurs en 32 bits binaire
    Mon prof nous a dit que l'on pouvait faire de cette manière:

    (code<<27)+(dest<<22)+(valeurRn<<17)+(Imm<<16)+S2

    Mais ça ne marche pas pouvez vous m'aider SVP...
    Merci
    Mais ça ne marche

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 193
    Par défaut
    Peut être existe t'il une fonction dans math.h?

  3. #3
    Membre émérite
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Par défaut
    Qu'est-ce qui ne fonctionne pas ?
    Si tes valeurs récupérées dans tes ints sont bonnes il n'y a pas de raison que ça ne fonctionne pas

    Par exemple pour le code il faut absolument que les bits à gauche de tes 5 bits soient à 0.
    Ex pour int = 16 bits : 0000000000011111 (j'ai mis tous les 5 bits concernés à 1)
    Si on a 5 bits à 1 pour dest : 0000000000011111

    Les calculs sont : code << 5 = 0000001111100000
    Ce qui nous donne à la fin : (code << 5) + dest = 0000001111111111

    J'ai pris des valeurs sur 16 bits mais toi tu considères que tes valeurs sont sur 32 bits, c'est exactement pareil mais avec plus de 000

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 193
    Par défaut
    Oui mais pour afficher vous faite comment
    printf("%b",instr)?

    Ps: je n'ai jamais afficher de binaire

  5. #5
    Membre émérite
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Par défaut
    Ah !
    Tu ne peux pas afficher le binaire comme ça il faut que tu crées une fonction qui permette d'afficher le nombre en binaire
    Le mieux je pense est de créer une macro (ou une fonction) getBit et ensuite tu fais un for pour voir combien de bits tu veux lire

    Si tu n'y arrives pas demande conseil

    Edit : Pour ça il te faut connaître les opérateurs bitwise

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 193
    Par défaut
    Et j'ai vérifié mes valeurs en int sont bien retourné...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 193
    Par défaut
    Aussi juste pour vous demander somme nous obligé de passer du int en binaire puis faire un printf("%h",instr)
    Ou faire uniquement un printf("h", instr) nous suffit?

    La vérité c'est que ce que je veux vraiment obtenir à la fin est une donnée hexadécimale...

Discussions similaires

  1. Réponses: 8
    Dernier message: 18/04/2011, 14h46
  2. Afficher les décimals
    Par Seb33300 dans le forum Visual C++
    Réponses: 5
    Dernier message: 24/06/2007, 14h11
  3. Convertir un décimal en binaire
    Par rouliane dans le forum C++
    Réponses: 4
    Dernier message: 14/12/2006, 16h15
  4. Réponses: 4
    Dernier message: 06/09/2006, 11h45
  5. Afficher 3 décimales sous VBA
    Par Mors_Ubyte dans le forum Access
    Réponses: 8
    Dernier message: 18/07/2006, 21h21

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