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 :

Ecrire dans une valeur DWORD en hexa


Sujet :

C

Vue hybride

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 80
    Par défaut Ecrire dans une valeur DWORD en hexa
    Bonsoir a tous,

    voila, pour lire 1, 2 ou n bits dans une valeur DWORD, j'utilise le code suivant:

    DWORD A=0xF6000000;
    int i;
    i=((A >> 24) & 0xF);

    Mais si je veux ecrire dans certains bits, comment faut-il operer?

    Merci d'avance...

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Arthur59
    Mais si je veux ecrire dans certains bits, comment faut-il operer?
    Mettre à 1 le bit 3 :
    mettre à 0 le bit 4 :
    Ca ne sort pas ex-nihilo. Il faut connaitre l'algèbre booléenne et lire son livre de C a la rubrique opérateurs bit à bit (bitwise operators)

    K&R2 : Chapitre 2.9, page 48.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 80
    Par défaut
    Merci pour cette reponse,

    mais si je veux ecrire la valeur d'un int dans un nombre de bit donne,
    par exemple j'ai une valeur DWORD B,dans laquelle je veux ecrire
    la valeur de mon entier x (16 valeur possible) a partir du bit 4 jusqu'au bit 7?
    j'ai bien essaye ceci, mais ca ne marche pas:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DWORD B=0x00000000;
    int x;
    x=5;
     
    B |= (4 << x) & 0xF;

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Arthur59
    Merci pour cette reponse,

    mais si je veux ecrire la valeur d'un int dans un nombre de bit donne,
    par exemple j'ai une valeur DWORD B,dans laquelle je veux ecrire
    la valeur de mon entier x (16 valeur possible) a partir du bit 4 jusqu'au bit 7?
    j'ai bien essaye ceci, mais ca ne marche pas:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DWORD B=0x00000000;
    int x;
    x=5;
     
    B |= (4 << x) & 0xF;
    Déjà, quand on manipule des bits, on utilise exclusivement des variables non signées. Pas de int, mais unsigned[ int].

    Ensuite, on commence par faire le ménage : on efface les 4 bits à partir de la position 4 :
    puis, on positionne les bits qui doivent être à 1 :
    Nota. Pour générer un masque à partir de la largeur, c'est facile, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    masque = (1 << largeur) - 1;
    En effet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    1 << 4 = 0x10 (10000b)
    0x10 - 1 = 0xF (01111b)
    Ceci peut aider :

    http://emmanuel-delahaye.developpez..../ed/inc/bits.h

    Il ne faut pas être frileux. Il faut au contraire être curieux, expérimenter pas à pas et afficher les résultats sous la forme hexa (très proche du binaire). Il n'y a que comme ça qu'on arrive à maitriser une technique nouvelle...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 80
    Par défaut
    ...merci pour toutes ces infos, je vais tester ca et je vous tiens au courant de l'evolution .

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 80
    Par défaut
    OK, ca marche: merci beaucoup Emmanuel.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/07/2014, 12h40
  2. Réponses: 4
    Dernier message: 29/03/2006, 08h22
  3. [VB] Ecrire dans une ComboBox -> Combo = TexBox
    Par zejo63 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 26/01/2006, 11h25
  4. [MySQL] Comment ecrire dans une BDD à partir d'un tableau ?
    Par weed dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 16/09/2005, 15h53
  5. Réponses: 4
    Dernier message: 15/04/2005, 15h25

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