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 :

Bit map (unique)


Sujet :

C#

  1. #1
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut Bit map (unique)
    Bonjour,

    Dans mon appli j'ai differentes checkbox afin que l'utilisateur puisse prendres des options.
    Je dois passer cette info à une autre plateforme. J'ai pensé à utiliser les bit map (1 2 4 8 16.....).

    1er checkbox (Value=1)
    2eme checkbox (Value=2)
    3eme checkbox (Value=4).....

    si je coche les 3, j'aurais donc 7 à envoyé. Ma question se porte sur comment faire pour revenir en arriere ?

    Je recois 7 ? commentje retrouve 1,2 et 4 ?

    Merci à vous

  2. #2
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Tu peux bêtement convertir ton 7 en binaire : 111, car au final c'est ça que tu fais en utilisant tes bit map.

    Par contre je ne vois pas ce qui justifie un tel système. Un tableau d'entier ne répondrais par de la même façon à ta problématique ?

    De nos jours je pense que ce genre "d'optimisations" sont saugrenues et fantasques...

  3. #3
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    Nous faisons des logiciels pour les traders, c'est du temps reels, nous devons tous optimiser au maximums, la plateform gere des millions de donnees en simultané

    Y a t il un algo pour retrouver les chiffres ? je recois 21 ou 10101 comment puis je redecomposer en checkbox de valeur 1 et 4 et 16 ?

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    tu peux éventuellement passer par enum, ca ne change rien sur les masques binaires ca rend juste plus lisible


    tu peux mettre la valeur d'enum dans chaque checkbox puis faire
    dans un sens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int total = 0;
    total = (e.v1 | e.v2 | e.v3);    // => 1 + 2 + 4 = 7
    et dans l'autre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ((e.v1 & total) != 0) 
      {
            // bit à 1
        }
    }

    c'est le principe des masques binaires
    si tu as 7
    00000111
    et que tu fais un masque AND sur 4
    00000100
    le résultat est
    00000100
    qui est donc différent de 0

    après que ce genre de truc gagne du temps, mais c'est à tester en effet, quand on a besoin de performances il faut gratter un peu ^^
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    Merci pour tes explications. Je vais etudier cela.

    Je ne savais pas que (e.v1 | e.v2 | e.v3); == (e.v1 + e.v2 + e.v3);

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    je fais du vb.net, je suis passé par un convertisseur vb.net/c#
    néanmoins si j'ai bien suivi le | est un ou logique, & un et logique, il reste à trouver le ou exclusif et le not ^^

    il y a certaines énums qui fonctionnent comme ca dans le framework, comme la propriété anchor des controles qui vaut par défaut Left | Top
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    Je n'avais pas compris au depart.

    Merci à toi

  8. #8
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Je reste sceptique sur le gain mais pourquoi pas !

    Le ou exclusif c'est " ^ " il me semble, et not c'est bêtement " ! " je crois, et le complément à bit c'est "~"...

  9. #9
    Membre éprouvé Avatar de LeCygne
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2010
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2010
    Messages : 91
    Par défaut Attribu "Flags".
    Bonjour,

    Tu devrais peut-etre regarder du cote de l'attribu "Flags". Un exemple est donné sur msdn :

    http://msdn.microsoft.com/fr-fr/libr...(v=VS.95).aspx

  10. #10
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    tu peux aussi jeter un oeil à la classe BitArray du framework

Discussions similaires

  1. [XL-2007] Mapping fichier excel vers un modèle de données unique
    Par ikoita dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/02/2014, 15h14
  2. Cherche un simulateur d'opcode 80486 ( mode 32 bits uniquement)
    Par yann458 dans le forum x86 32-bits / 64-bits
    Réponses: 0
    Dernier message: 26/12/2011, 12h50
  3. Inversion Map à valeurs non uniques
    Par maccormick dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 28/09/2010, 14h49
  4. Problème de mapping MSSql unique identifier
    Par Micky0001 dans le forum Hibernate
    Réponses: 1
    Dernier message: 18/06/2010, 13h05
  5. Réponses: 4
    Dernier message: 27/02/2008, 12h48

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