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 :

Déterminer des options par rapport à un masque


Sujet :

Algorithmes et structures de données

  1. #1
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut Déterminer des options par rapport à un masque
    Salut,

    Voilà, j'ai un p'tit problème d'explication.

    En fait, j'ai un masque de type long, qui contient une valeur. Exemple : 33894145.

    J'ai différentes options où le flag est actif ou non.

    Option1 : 262144
    Option2 : 65536
    Option3 : 131072
    Option4 : 524288

    Je voudrais savoir si l'option 1 est active.

    Je crois qu'il faut faire un truc du style mais qu'est-ce que cela donne ?

    Bref, comment déterminer une option en fonction d'un masque de valeur ? Si quelqu'un peut m'expliquer comment cela fonctionne ?

    Merci par avance.

  2. #2
    scr
    scr est déconnecté
    Membre habitué
    Inscrit en
    Juin 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 127
    Points : 143
    Points
    143
    Par défaut
    Citation Envoyé par esoso Voir le message
    Salut,

    Voilà, j'ai un p'tit problème d'explication.

    En fait, j'ai un masque de type long, qui contient une valeur. Exemple : 33894145.

    J'ai différentes options où le flag est actif ou non.

    Option1 : 262144
    Option2 : 65536
    Option3 : 131072
    Option4 : 524288

    Je voudrais savoir si l'option 1 est active.

    Je crois qu'il faut faire un truc du style mais qu'est-ce que cela donne ?

    Bref, comment déterminer une option en fonction d'un masque de valeur ? Si quelqu'un peut m'expliquer comment cela fonctionne ?

    Merci par avance.
    Oui c'est cela il faut faire un ET binaire (And) entre ta valeur et ton masque.
    Le résultat est zéro si l'option n'est pas présente ou la valeur de ton masque si celle si est présente.

  3. #3
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par esoso Voir le message
    Bref, comment déterminer une option en fonction d'un masque de valeur ? Si quelqu'un peut m'expliquer comment cela fonctionne ?
    C'est plus comprehensible si on ecrit les nombres en binaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    optionA = 1  (decimal) = 000001 (binaire)
    optionB = 2  (decimal) = 000010 (binaire)
    optionC = 4  (decimal) = 000100 (binaire)
    optionD = 8  (decimal) = 001000 (binaire)
    optionE = 16 (decimal) = 010000 (binaire)
    ...
     
    valeur =  19 (decimal) = 010011 (binaire) 
     
                           = optionE + optionB + optionA

  4. #4
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut
    Ok, c'est super. Très compréhensible... et ça marche ;-).

    Merci.

    Ok, je reviens sur le sujet car j'ai un léger problème.

    En l'occurence, j'ai une option qui, en faisant le Et binaire, me fournit un masque différent de l'option. Qu'est-ce que cela signifie ?

    Dans mon exemple, j'ai la valeur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Option1 : 33558528
    Masque : 33894145
    Quand je fais :

    J'ai : 33554432, qui n'est pas la valeur de l'option1. Pourquoi ? L'option est présente ou non ?

  5. #5
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par esoso Voir le message
    J'ai : 33554432, qui n'est pas la valeur de l'option1. Pourquoi ? L'option est présente ou non ?
    Parceque option1 n'est pas une puissance de 2. Autrement dit: son ecriture binaire comporte plusieurs "1":

    33558528 (decimal) = 10000000000001000000000000 (binaire)

    Les options doivent être (de préférence) des puissances de 2 pour eviter les ambiguités.

  6. #6
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut
    Ok, donc, il n'y a pas de solution ?

  7. #7
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par esoso Voir le message
    Ok, donc, il n'y a pas de solution ?
    Si tu veux utiliser "33558528" comme valeur d'option, il va falloir décider comment tu gères les ambiguités.

    - Soit tu décides que la valeur "33894145" n'a pas de rapport avec l'option "33558528" car il y a un bit qui n'est pas a 1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    valeur  = 33894145 = 10000001010010111100000001
    OptionA = 33558528 = 10000000000001000000000000
    - Soit tu décides que l'option "33558528" est la somme de 2 sous-options:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    optionA = 33558528 = 10000000000001000000000000
    optionX = 33554432 = 10000000000000000000000000
    optionY =     4096 = 00000000000001000000000000
    
    optionA = optionX + optionY
    et donc que la valeur "33894145" comprend (entre autre) l'option "X"

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 390
    Points : 1 777
    Points
    1 777
    Par défaut
    Salut !

    On est de toute manière dans du binaire ici...

    Il me semble qu'il s'agit de trouver une égalité :
    Si Option And masque = Option alors Option est active (parce que de bit à bit, seul 1 & 1 donne 1)

    A plus !

Discussions similaires

  1. Récuperer des données par rapport a des cases d'option
    Par FCL31 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 04/03/2010, 15h47
  2. envoyer des données par rapport à une checkbox
    Par dudu134 dans le forum Langage
    Réponses: 2
    Dernier message: 18/05/2007, 18h57
  3. Centrer des données par rapport à un texte "parent"
    Par firejocker dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 08/01/2007, 16h44
  4. Réponses: 9
    Dernier message: 04/01/2007, 12h58
  5. [débutant]Desactiver des champs par rapport a un select
    Par Pymm dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/02/2005, 17h24

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