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 :

O Maitre des bits


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 196
    Par défaut O Maitre des bits
    Bonjour
    je fais une petite générateur de code qui doit géré la création des méthodes:
    Insert,Update,Delete

    Je sais qu'il y a une technique (souvent utilisé en c) pour n'envoyer qu'un int en paramètre en jouer avec le positioment des bits.

    Je ne trouve pas d'article sur cette technique (je vois pas quoi tapper dans google )

    Si vous voyez de quoi je veux parler et que vous avez un petit lien ou exemple

    Je suis preneur

    Merci

  2. #2
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    Bonjour,

    Je crois que ce que tu cherches d'appelle le décalage. Ca s'effectue à l'aide de "<<" et ">>". Pareil, j'ai galéré à trouver ça avec ces signes dans msdn donc j'ai cherché "opérateurs" et je suis tombé dessus :

    Les opérateurs : http://msdn.microsoft.com/fr-fr/libr...45(VS.80).aspx
    Le décalage : http://msdn.microsoft.com/fr-fr/library/8xftzc7e.aspx

    J'espère que c'est ça
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 196
    Par défaut
    Humm non moi c'est plus avec de Ou logique (|) je pense mais j'ai regardé l'opérateur | sur msdn mais il y a pas vraiment l'exemple que j'aimerai

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par MaximePalmisano Voir le message
    Je crois que ce que tu cherches d'appelle le décalage. Ca s'effectue à l'aide de "<<" et ">>". Pareil, j'ai galéré à trouver ça avec ces signes dans msdn donc j'ai cherché "opérateurs" et je suis tombé dessus :
    J'espère que c'est ça
    Je pense plutot qu'il veut jouer sur les masques de bits.

    du style, il reçoit 01010010, et il veut transformer cela en tableau de 8 boolée; effectivement il peut utiliser le décalage pour la récupération, mais je pense que son interrogation relève plus du masquage.

    Un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    		bool[] expandbyte(byte v)
    		{
    			bool[] b = new bool[sizeof(byte)]; 
    			for(int i= 0; i < sizeof(byte); i++)
    			{
    				b[i] = (v & (0x01 << i)) != 0;
    			}
    			return b;
    		}

  5. #5
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    Humm non moi c'est plus avec de Ou logique (|)
    Sauf erreur de ma part, l'opérateur du OU logique est "||".

    Si tu cherches à faire des opérations avec des masques, ce n'est plus du domaine de la programmation mais plutôt du calcul binaire.

    Dans ce cas, il faut que tu apprennes à jouer sur papier avec les nombres binaires pour savoir ce que tu veux faire. L'opérateur dont tu parles et qui est celui que tu recherches s'appelle un opérateur bit à bit.

    Il s'agit de '&' et '|' que tu peux retrouver ici :

    http://msdn.microsoft.com/fr-fr/library/7tafsdcy.aspx
    http://msdn.microsoft.com/fr-fr/library/xbwk1246.aspx

    Il existe également leurs alter égos "|=" et "&=" qui fonctionnent sur le même principe de factorisation que "+=" (a = a | b -> a |= b).

    Avec ces derniers, il s'agit vraiment d'appliquer un masque b au nombre a.
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 196
    Par défaut
    Citation Envoyé par MaximePalmisano Voir le message
    Sauf erreur de ma part, l'opérateur du OU logique est "||".
    Euh oui je voulais dire Ou binaire, on va dire que c'est la fin de la semaine

    Citation Envoyé par Bluedeep
    ....
    Masque de bits ca me semble un bon départ pour ma recherche sur google

  7. #7
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    Allez petit cadeau du Vendredi

    http://en.wikipedia.org/wiki/Mask_(computing)
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par MaximePalmisano Voir le message
    Sauf erreur de ma part, l'opérateur du OU logique est "||".
    Oui, il y a erreur car '|' est aussi un opérateur OU logique mais qui compare les deux membres et pas seulement le premier en cas de première condition à 'vrai'. Quel interêt ? de pouvoir faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bool b = func1() | func2();
    ce qui entraine l'appel de func2() quel que soit le retour de func1().

    Sinon '|' est aussi l'opérateur OU binaire. Le fonctionnement binaire ou logique dépend du typage : si les deux operandes sont boolean il opére en logique, si c'est numérique il opére en binaire.

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

Discussions similaires

  1. [VS 2005] Manipuler des bits
    Par b_lob dans le forum C#
    Réponses: 5
    Dernier message: 05/02/2007, 09h51
  2. Réponses: 10
    Dernier message: 19/07/2006, 15h49
  3. concatener des bits
    Par philippe V dans le forum C++
    Réponses: 16
    Dernier message: 23/08/2005, 01h26
  4. Travailler avec des bits
    Par Vulvulune dans le forum Langage
    Réponses: 5
    Dernier message: 02/03/2003, 19h09
  5. Question : ordre des bits ?
    Par Choupi dans le forum C
    Réponses: 3
    Dernier message: 11/02/2003, 06h22

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