[R] A quoi servent les fonctions BitOR BitAND BitNOT ?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Morphee
Niveau 2
Niveau 2
Messages : 28
Enregistré le : mar. 16 févr. 2010 19:43
Status : Hors ligne

[R] A quoi servent les fonctions BitOR BitAND BitNOT ?

#1

Message par Morphee »

Est-ce quelqu'un pourrait m'expliquer a quoi servent les fonctions BitOR BitAND BitNOT svp ?

Malgré les explications en Anglais(qui est très moyen chez moi :roll: ) de la doc, je n'ai pas compris ce que ça fait et dans quel contexte on les utilisent...

Est-ce que quelqu'un saurait éclairer ma lanterne svp ? :shock:
Modifié en dernier par Morphee le dim. 21 févr. 2010 19:59, modifié 1 fois.
Habibsbib
Niveau 7
Niveau 7
Messages : 393
Enregistré le : dim. 30 août 2009 13:49
Localisation : Euh...Verticale, entre le siège et l'écran...
Status : Hors ligne

Re: [..] A quoi servent les fonctions BitOR BitAND BitNOT ?

#2

Message par Habibsbib »

Aaaaaaloooooors.

Les commandes BitOR, BitAND et BitNOT permettent de manipuler des valeurs bianires plus rapidement que si on le faisait nous-même. elles sont généralement utilisées en AutoIt pour manipuler les GUI Styles Appendix, en les croisant et les intégrant à des inerfaces afin de créer des GUI's de meilleur qualité. je développe. Imaginons que nous voulons créer une GUI qui a une bordure unie. Je regarde dans la banque de styles inclue à l'aide, puis je le mets en flag à la colonne "styles", comme ceci :

Code : Tout sélectionner

GUICreate ("My GUI", 100, 100, 100, 100, $WS_BORDER) 
$WS_BORDER étant une variable contenant une valeur hexadécimale, en l'occurence c'est ça :

Code : Tout sélectionner

0x00800000 
Très bien. On a donc maintenant une GUI ayant des bords unis. Mais voilà : on veut aussi que nôtre GUI initialement maximisée. Comment fait-on pour croiser les deux ? Rien de plus simple ! La commande BitOR rentre en action :

Code : Tout sélectionner

GUICreate ("My GUI", 100, 100, 100, 100, BitOR($WS_BORDER, $WS_MAXIMIZE))
Le tour est joué ! Pour les commandes BitAND et BitNOT, ce sont d'autres manipulations plus complexes de valeurs binaires.
Si tu veux t'instruire à ce sujet, je te conseille ces tutoriels du Site Du Zero :

http://www.siteduzero.com/tutoriel-3-15 ... naire.html

http://www.siteduzero.com/tutoriel-3-33 ... naire.html

Et voilà !

Enjoy ;)
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] A quoi servent les fonctions BitOR BitAND BitNOT ?

#3

Message par timmalos »

Cependant j'ai remarqué que mettre $WS_BORDER+$WS_MAXIMIZE revenait au meme que de mettre BitOR($WS_BORDER, $WS_MAXIMIZE) parce que les valeurs ont été choisis pour.
Morphee
Niveau 2
Niveau 2
Messages : 28
Enregistré le : mar. 16 févr. 2010 19:43
Status : Hors ligne

Re: [R] A quoi servent les fonctions BitOR BitAND BitNOT ?

#4

Message par Morphee »

Merci beaucoup pour ta réponse ! :D
Habibsbib
Niveau 7
Niveau 7
Messages : 393
Enregistré le : dim. 30 août 2009 13:49
Localisation : Euh...Verticale, entre le siège et l'écran...
Status : Hors ligne

Re: [..] A quoi servent les fonctions BitOR BitAND BitNOT ?

#5

Message par Habibsbib »

De rien !
timmalos a écrit :Cependant j'ai remarqué que mettre $WS_BORDER+$WS_MAXIMIZE revenait au meme que de mettre BitOR($WS_BORDER, $WS_MAXIMIZE) parce que les valeurs ont été choisis pour.
Effectivement, mais il vaut mieux user de BitOR dans l'absolu, on est sûr de ne pas faire de boulettes ;)
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] A quoi servent les fonctions BitOR BitAND BitNOT ?

#6

Message par Iste »

timmalos a écrit :Cependant j'ai remarqué que mettre $WS_BORDER+$WS_MAXIMIZE revenait au meme que de mettre BitOR($WS_BORDER, $WS_MAXIMIZE) parce que les valeurs ont été choisis pour.
C'est pas qu'elles ont été choisis pour, mais qu'on a pas le choix !
Mais en effet, pour coller des flag, c'est plus simple (et plus claire) de les additionner.
La ou on est obligé d'utiliser BitAND, c'est pour récupérer la position des flags.

Mais BitOR et BitNOT sont vraiment peu utile.

pour ceux que ca intéresse : http://www.siteduzero.com/tutoriel-3-32 ... flags.html
C'est assez intéressant, mais n'est pas tres utile en autoit
Signez ici
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [R] A quoi servent les fonctions BitOR BitAND BitNOT ?

#7

Message par timmalos »

Au contraire je me suis souvent servi de BitOR et BitNOT lors de l'utilisation avancée de paramètres avec des Cases a cocher. Mais tu as raison, en tout cas ces fonctions permettent la manipulation de chaines binaires. Pour en expliquer le principe:

BitOR:

01000101 (69)
10010111 (151)
=======
11010111 (215)

BitAND:

01000101 (69)
10010111 (151)
=======
00000101 (5)

BitNOT:

01000101 (69)
=======
10111010 (186)
Répondre