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 :

Une façon d'écrire un if que je comprends pas


Sujet :

C++

  1. #1
    Membre actif Avatar de chaospat
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 45
    Par défaut Une façon d'écrire un if que je comprends pas
    Il y a un ou deux jours, j'ai vue pour la première fois une façon d'écrire un if que je comprend pas, mais elle fonctionne.
    La voici.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    int a=3;
    int b=3;
     
    if(a & (b << 4))
       cout << " Vrai " << endl;
    else
      cout << " Faux " << endl;
     
    // ici sa donne Faux, mais
     
    if(a | (b << 4))
       cout << " Vrai " << endl;
    else
      cout << " Faux " << endl;
     
    //ici sa donne Vrai
    Quelqu'un pourrais me dire, si possible avec exemple(s), comment cette manière d'écrire un if fonctionne, merci.

  2. #2
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Le C++ a hérité du C - qui n'a pas de type bool natif - sa capacité à interpréter les valeurs entières comme expressions booléennes : une valeur de 0 (dont tous les bits sont à zéro - en tout cas en complément à deux) est interprétée à « faux », et toute autre valeur à « vrai ».

    Ici on cherche à savoir si l'un des bits à 1 est commun aux deux valeurs (opérateur bit à bit &) ou si l'une des valeurs possède au moins un bit à 1 (opérateur bit à bit |).

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    b << 4 est un décallage de bits : décallage de 4 bits vers la gauche de b
    b = 3 = 0000 0011 en binaire
    b<<4 = 0011 0000 = 48
    & est l'opérateur et binaire (bit à bit)
    a = 3 = 0000 0011
    0000 0011 & 0011 0000 = 00000000 => évalué à false

    | est l'opérateur ou binaire
    0000 0011 | 0011 0000 = 0011 0011 => évalué à true

    on appelle ça généralement des mask, bitmask ou champ de bits aussi
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    @Bousk, tu es sûr pour "champ de bits", ce n'est pas le nom français des "bitfields", la chose rare suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct Bidule™ {
    signed a :3;
    signed b :2;
    :1;
    unsigned c:2;
    };

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par ternel Voir le message
    @Bousk, tu es sûr pour "champ de bits", ce n'est pas le nom français des "bitfields"
    Je sais pas, j'apele champ de bits juste la notation binaire, c'est un abus mais tout le monde comprend.
    Les mask servent à créer les champs, mais finalement c'est la même chose, juste du binaire.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    C'est le cas en effet, mais cette construction n'est au final que du sucre syntaxique pour la même technique, donc utiliser la terminologie dans le contexte général comme Bousk l'a fait ne me choque pas perso.

  7. #7
    Membre actif Avatar de chaospat
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 45
    Par défaut
    Merci pour l'explication, sa me travaillais de ne pas comprendre

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

Discussions similaires

  1. une ligne de code de variable SQLwhere que je comprend pas
    Par doogybreton dans le forum VBA Access
    Réponses: 3
    Dernier message: 23/01/2008, 15h58
  2. [FTP] Pb sur foreach que je comprend pas
    Par Shandler dans le forum Langage
    Réponses: 3
    Dernier message: 28/12/2006, 18h31
  3. Erreur que je comprends pas
    Par makohsarah dans le forum Langage
    Réponses: 1
    Dernier message: 30/08/2006, 18h14
  4. Petit truc tout simple que je comprend pas
    Par Olaf MENJI dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 29/11/2005, 16h56
  5. Réponses: 13
    Dernier message: 27/06/2005, 14h36

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