Page 1 sur 1

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

Posté : dim. 21 févr. 2010 11:43
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:

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

Posté : dim. 21 févr. 2010 12:50
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 ;)

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

Posté : dim. 21 févr. 2010 17:43
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.

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

Posté : dim. 21 févr. 2010 20:01
par Morphee
Merci beaucoup pour ta réponse ! :D

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

Posté : dim. 21 févr. 2010 21:25
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 ;)

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

Posté : lun. 22 févr. 2010 10:10
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

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

Posté : lun. 22 févr. 2010 13:36
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)