Application de masque et condition if
Résolu/Fermé
Kitépat
Messages postés
2
Date d'inscription
mercredi 27 février 2013
Statut
Membre
Dernière intervention
27 février 2013
-
27 févr. 2013 à 09:30
[Dal] Messages postés 6057 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 17 mars 2023 - 27 févr. 2013 à 10:53
[Dal] Messages postés 6057 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 17 mars 2023 - 27 févr. 2013 à 10:53
A voir également:
- Application de masque et condition if
- Appel masqué - Guide
- Aucune application permettant d'ouvrir ce lien n'a été trouvée ✓ - Forum Wiko
- Excel condition couleur - Guide
- If exist ✓ - Forum Autoit / batch
- Rappeler un numéro masqué ✓ - Forum Mobile
3 réponses
Bonjour
Petit rappel : en C, une expression est fausse si elle vaut 0 et vraie si elle vaut autre chose que 0.
Dans la mesure ou tu as indiqué toi-même que ton expression pouvait valoir 0x8000, alors oui, ton expression peut être vraie.
Petit rappel : en C, une expression est fausse si elle vaut 0 et vraie si elle vaut autre chose que 0.
Dans la mesure ou tu as indiqué toi-même que ton expression pouvait valoir 0x8000, alors oui, ton expression peut être vraie.
Kitépat
Messages postés
2
Date d'inscription
mercredi 27 février 2013
Statut
Membre
Dernière intervention
27 février 2013
27 févr. 2013 à 10:32
27 févr. 2013 à 10:32
Merci pour la réponse rapide et complète ;)
[Dal]
Messages postés
6057
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
17 mars 2023
1 043
Modifié par [Dal] le 27/02/2013 à 10:55
Modifié par [Dal] le 27/02/2013 à 10:55
Salut le père. et Kitépat,
Juste pour compléter la réponse de le père., en répondant aussi à la question suivante de Kitépat :
est-ce qu'ici on observe uniquement le premier bit ou bien tous ?
0x8000 équivaut à 1000000000000000
Le & étant l'opérateur AND logique, le résultat de (MessageInformation.couleur & 0x8000) sera 1000000000000000 si le "premier" bit correspondant à ce masque est aussi à 1, et sera 0000000000000000 si ce "premier" bit correspondant à ce masque est à 0.
https://fr.wikipedia.org/wiki/Table_de_v%C3%A9rit%C3%A9
Donc, 0xFABC, qui est 1111101010111100 en binaire, renvoie effectivement 1000000000000000 (évalué à vrai en C, car différent de zéro, comme indiqué par le père.) car le "premier" bit est à 1.
Donc, if ((MessageInformation.couleur) & 0x8000) est bien évalué à "vrai" si le "premier" bit de MessageInformation.couleur est 1, et la valeur des bits autres que le "premier" n'a pas d'incidence sur le résultat du test "if".
Dal
Juste pour compléter la réponse de le père., en répondant aussi à la question suivante de Kitépat :
est-ce qu'ici on observe uniquement le premier bit ou bien tous ?
0x8000 équivaut à 1000000000000000
Le & étant l'opérateur AND logique, le résultat de (MessageInformation.couleur & 0x8000) sera 1000000000000000 si le "premier" bit correspondant à ce masque est aussi à 1, et sera 0000000000000000 si ce "premier" bit correspondant à ce masque est à 0.
https://fr.wikipedia.org/wiki/Table_de_v%C3%A9rit%C3%A9
Donc, 0xFABC, qui est 1111101010111100 en binaire, renvoie effectivement 1000000000000000 (évalué à vrai en C, car différent de zéro, comme indiqué par le père.) car le "premier" bit est à 1.
Donc, if ((MessageInformation.couleur) & 0x8000) est bien évalué à "vrai" si le "premier" bit de MessageInformation.couleur est 1, et la valeur des bits autres que le "premier" n'a pas d'incidence sur le résultat du test "if".
Dal