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 :

Assigner des valeurs de bit dans un int


Sujet :

C++

  1. #1
    Membre confirm�
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Avril 2014
    Messages
    80
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activit� : Auditeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par d�faut Assigner des valeurs de bit dans un int
    Bonjour,

    Je cherche � stocker des valeurs de bit dans une donn�e uint8_t.

    En entr�e j�ai un tableau de bit, nomm� et initialis� : uint8_t BIT[16], et je cherche � stocker chacune des valeurs de ces bits dans plusieurs donn�es uint8_t Valeur.

    Exemple :
    @0 Valeur = BIT[0]
    @1 Valeur = BIT[1] �.

    Au d�part j�avais pens� faire quelque chose comme �a :
    Valeur >> 0 = BIT[0] &1 (BIT[0] &1 car c�est seulement le premier bit que je veux mettre dans Valeur)
    Valeur >> 1 = BIT[1] &1

    Mais cela ne marche pas.

    Je vous remercie d�avance pour votre aide.

  2. #2
    Membre Expert
    Avatar de imperio
    Homme Profil pro
    �tudiant
    Inscrit en
    Mai 2010
    Messages
    872
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 872
    Par d�faut
    Ton tableau BIT repr�sente un type en big endian ? Si oui, commence � le lire par la fin pour ajouter les bits :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    int i = sizeof(Valeur) - 1;
     
    for (; i >= 0; --i) {
        Valeur = Valeur << 1;
        Valeur |= BIT[i];
    }
    Dans l'autre sens si c'est un little endian. En somme rien de bien compliqu�. Essaie juste de penser le plus logiquement possible.

  3. #3
    Membre confirm�
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Avril 2014
    Messages
    80
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activit� : Auditeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par d�faut
    Merci pour ta r�ponse, je vais travailler sa.

    Je suis en little Indian, je vois quoi changer. Mais est-ce que j'ai besoin d'un masque pour affecter la valeur de BIT? Ou simplement en mettant = BIT[0], j'affect seulement le bit contenant la valeur?

  4. #4
    Membre Expert
    Avatar de imperio
    Homme Profil pro
    �tudiant
    Inscrit en
    Mai 2010
    Messages
    872
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 872
    Par d�faut
    Tout � fait, essaie les 2 �critures pour voir la diff�rence. Si tu veux, utilise cette fonction pour regarder le binaire de ta variable :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    template<class C>
    std::string convertToBinary(C &x)
    {
        int         size = sizeof(x) * 8 - 1;
        std::string ret;
     
        while (size >= 0)
        {
            ret += (char)(((x >> size) & 1) + '0');
            if (size-- % 8 == 0 && size >= 0)
                ret += ' ';
        }
        return ret;
    }
    Tu verras rapidement pourquoi il faut faire "|=" au lieu de "=". Et n'h�site pas � chercher sur google comment fonctionne les op�rateurs binaires, un petit rappel ne fait jamais de mal.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [WD19] Assigner des valeurs dans les Combos
    Par askior dans le forum WinDev
    R�ponses: 13
    Dernier message: 05/05/2014, 14h43
  2. Assigner des valeurs � des float dans une structure
    Par Kai_Leng dans le forum D�buter
    R�ponses: 18
    Dernier message: 03/01/2013, 23h12
  3. Assigner des valeurs dynamiques aux parametres dans X3 SAGE
    Par Chantalbd dans le forum Autres Solutions d'entreprise
    R�ponses: 0
    Dernier message: 02/11/2012, 08h49
  4. R�cup�rer des valeurs de checkbox dans MySQL
    Par digger dans le forum SQL Proc�dural
    R�ponses: 1
    Dernier message: 05/09/2005, 14h58
  5. R�ponses: 17
    Dernier message: 18/03/2005, 09h23

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