FONCTIONNEMENT DE XOR

Signaler
Messages postés
1411
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
-
Messages postés
3
Date d'inscription
mardi 8 novembre 2005
Statut
Membre
Dernière intervention
20 juin 2008
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/26993-fonctionnement-de-xor

Messages postés
3
Date d'inscription
mardi 8 novembre 2005
Statut
Membre
Dernière intervention
20 juin 2008

il y'en a une methode plus simple pour qlquler l'XOR de deux binnaire :
soit a et b de nbr binnaire,

A XOR B = ( A OU B ) et NOT (A ET B)

en vb en peux faire comme ca (pour titre educatif):
XORysn = (a And b) And (Not (a And b))

mais en pratique il y'en deja un XOR deja defini en VB
Messages postés
2
Date d'inscription
lundi 29 septembre 2003
Statut
Membre
Dernière intervention
18 février 2008

il est aussi possible de faire le "ou exclusif" sous excel de cette façon:

appliquer la formule =SI(OU(ET(A1=1;A2=1);ET(A1=0;A2=0));0;1)
Messages postés
921
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
23 septembre 2010

A xor B = (A and not B) or (not A and B)
Ce qui résume tout à fait clairement puisque xor ("OU exclusif") renvoie 1 si les bits sont différents, 0 sinon
:)
Messages postés
550
Date d'inscription
vendredi 5 janvier 2001
Statut
Membre
Dernière intervention
23 septembre 2006

pas confondre xor et mod !
mod c'est comme le dit saros, le reste dans la division euclidienne de a par b
par exemple a mod b = a-int(a/b) 'on considere tout positif pour eviter problemes

le mod est un opérateur arithmetique

le xor est un operateur logique !
a mod b => a et b sont d nombres

a xor b (ou and ou or ou not) a et b sont des expression vrai ou fausse
dans le cas ou ce sont des nombres, alors ils sont "décomposé" en nombre binaire, et le xor s'applique sur chaque bit du nombre.

un exemple d'application :
dans les API, vous pouvez etre amene a par exemple recuperer les flags d'une fenetre.
puis à redefinir les flasg a partir de ceux obtenus (en le modifiant)
Ces popriété sont stocké dans une variable long. En effet, une propriété (par exemple fenetre redimensionable) représente 1 bit dans la variable
donc si vous voulez forcer le non redimensionnement, il vous faudra changer le bit en question pour qu'il ait la valeur 0

ex : le flag recu de la fenetre est 70 (pour faier simple) soit en binaire :
0100 0110
en admettant que ce soit le bit 7 qui définisse la fenetre comme redimensionable, il vous faut modifier ce nombre pour obtenir :
0000 0110

comment faire ?
grace au and. explication. le 7 em bit tout seul, donne le nombre 64
et d'apres le tableau de verite du and on a

ab s
00 0
01 0
10 0
11 1


si on fait un AND simple ca donne :
0100 0110
0100 0000

0100 0000
or c'est pas ce qu'on voulait. en revanche en appliquant un Not (inverseur) avant, ca donne :

0100 0110
1011 1111

0000 0110

et la notre 1 est parti.


De meme pour forcer le passage a 1 d'un bit, si par exemple on a :
0000 0110
et qu'on veut forcer le passage a 1 du 7e bit, on utilise une or :

0000 0110
0100 0000

0100 0110


voila j'espere que je me suis pas trompé dans tout ce que j'ai dit :)
++
Afficher les 14 commentaires