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 :

Somme de puissances de deux


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2007
    Messages : 58
    Par défaut Somme de puissances de deux
    Bonjour,

    Voici mon problème:
    Sur un questionnaire un utilisateur a une question où il doit cocher autant de checkbox que nécessaire sur un total d'une cinquantaine. Dans le code les valeurs des checkbox sont identifiés par des puissances de deux, un peu à la manière des droits unix.
    réponse A : 1
    réponse B : 2
    réponse C : 4
    réponse D : 8
    réponse E : 16
    réponse F : 32
    ...

    la valeur de toute la question en base de donnée pour un utilisateur représente la somme des valeurs des questions cochées.
    Par exemple un utilisateur avec 4148 aura donc coché assurémment les questions de valeur 4096, 32, 16 et 4.

    Aujourd'hui je dois faire le chemin dans le sens inverse, c'est à dire resortir la question précochée par rapport à la valeur. (ex 33558580 )
    Ma question est de savoir si pour cela je dois continuer à me prendre la tête avec de la récursivité en testant la somme de toutes les puissances de deux ou s'il n'y aurait pas un moyen un peu plus simple de faire. Je pense notamment au & sur des formes binaires mais je ne suis pas vraiment expert là dedans.

    Merci de me faire partager vos idées

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Comme ceci:
    CheckBoxNN.Checked=(Valeur & (1<<NN))!=0 ;
    (1<<N) est égal à 2 puissance N.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2007
    Messages : 58
    Par défaut
    Merci beaucoup pour ta réponse, c'est en effet exactement ça qu'il me faut.

    J'essaie de bien comprendre ce que cela signifie via la msdn sur l'opérateur "<<" mais une phrase me bloque un peu:

    les cinq bits de poids faible du second opérande.
    Que sont les bits de poids faible?

    Merci encore!

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2007
    Messages : 58
    Par défaut
    Je pense avoir compris que les bits de poids faibles sont les plus petits bits du nombre, ceux les plus à droite mais je ne comprends pas pourquoi:

    Si le premier opérande est un int ou uint (quantité 32 bits), la valeur du décalage est donnée par les cinq bits de poids faible du second opérande.

    Si le premier opérande est un long ou ulong (quantité 64 bits), la valeur du décalage est donnée par les six bits de poids faible du second opérande.
    Moi ce que je comprends c'est que quatre en int32 ça donne 29 zéros et 100 alors que quatre en int64 ça donne 61 zéros et 100 également. Mais pourquoi le décalage serait différent?

    Si quelqu'un pouvait m'expliquer rapidement ce que ça signifie avant que je passe le topic en résolu...

  5. #5
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    cinq bits de poids faible du second opérande.
    Ca permet de décaler le premier opérande de 0 à 31 positions.

    six bits de poids faible du second opérande.
    Ca permet de décaler le premier opérande de 0 à 63 positions.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2007
    Messages : 58
    Par défaut
    ok, en effet ça paraît logique!
    Merci en tout cas

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

Discussions similaires

  1. Somme.si devant répondre à deux critères
    Par Jonathan Raucy dans le forum Excel
    Réponses: 2
    Dernier message: 22/02/2008, 15h17
  2. Nombres remarquables : Sommes des puissances des sous-nombres
    Par PoZZyX dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 15/11/2007, 15h20
  3. Somme de puissances
    Par hm1ch dans le forum Langage
    Réponses: 6
    Dernier message: 06/08/2007, 23h49
  4. Puissance de deux supérieure
    Par NiamorH dans le forum C
    Réponses: 30
    Dernier message: 02/04/2007, 10h29
  5. texture et puissance de deux..encore
    Par mm2405 dans le forum OpenGL
    Réponses: 11
    Dernier message: 12/07/2006, 12h42

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