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 :

Questions sur les decalages et les masques


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Points : 56
    Points
    56
    Par défaut Questions sur les decalages et les masques
    Bonjour,

    désolé de poser cette question ici qui serait plus approprié dans le forum C mais je n'ai pas eu de réponse.
    Cela fait trop longtemps que je n'ai pas manipulé de concepts bas niveau et question decalage et masquage de bits j'ai un peu de mal.
    J'explique mon probleme j'ai 3 variables codées chacune sur 8 bits :

    unsigned char dst;
    unsigned char val1;
    unsigned char val2;

    val1 et val2 contiennent des valeurs <= 16 et je dois assigner val1 au 4 premiers bits de dst et val2 au 4 derniers de dst.

    Je sais qu'il faut utiliser les decalages mais apres je vois pas trop le masque à utiliser.
    Je pensais à un truc du style pour val1:

    dst |= 0xF0; // Mets les 4 premiers bits à un
    dst ^= 0xF0; // Mets les 4 premiers bits à 0
    dst |= (val1 << 4);
      0  0

  2. #2
    Membre éprouvé Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Points : 1 122
    Points
    1 122
    Par défaut
    Bonjour,

    voici le code:
    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
     
    int main() {
    unsigned char dst = 0x0;
    unsigned char val1 = 0x0a;
    unsigned char val2 = 0x0e;
     
    // Masquer les autres bits de val1, les assignés à dst.
    dst |= (val1&0x0f);
     
    //Idem pour val2, plus décalage vers le poids fort.
    dst |= ((val2&0x0f)<<4);
     
    printf("%4X\n",dst);
     
    system("pause");
    return EXIT_SUCCESS;
     
    }
      0  0

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par Caine
    Bonjour,

    voici le code:
    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
     
    int main() {
    unsigned char dst = 0x0;
    unsigned char val1 = 0x0a;
    unsigned char val2 = 0x0e;
     
    // Masquer les autres bits de val1, les assignés à dst.
    dst |= (val1&0x0f);
     
    //Idem pour val2, plus décalage vers le poids fort.
    dst |= ((val2&0x0f)<<4);
     
    printf("%4X\n",dst);
     
    system("pause");
    return EXIT_SUCCESS;
     
    }
    Seul pb c'est que dst contient au depart une valeur que je ne peux pas mettre à 0 car sinon j'efface une des 2 parties qui m'interesse.
    En gros si j'ai

    dst = 0x8b
    la ligne dst |= (val1&0x0f) ne fonctionnera pas car je vais faire un OU
    avec 0x0a.
      0  0

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ne pas obtenir de réponse n'est pas une raison pour multiposter, merci d'éviter à l'avenir.

    La suite ici :
    http://www.developpez.net/forums/viewtopic.php?t=456463
      0  0

Discussions similaires

  1. Questions sur la compatibilité et les version de VB
    Par jam92400 dans le forum Discussions diverses
    Réponses: 22
    Dernier message: 08/04/2008, 16h19
  2. Réponses: 2
    Dernier message: 28/07/2007, 01h21
  3. 3 questions sur le web et les technologies associées
    Par amazircool dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 20/07/2007, 00h16
  4. Des questions sur le C et les jeux (et interfaces)
    Par straitch dans le forum Développement 2D, 3D et Jeux
    Réponses: 8
    Dernier message: 02/07/2007, 17h21

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