Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DIFFÉRENCE ENTRE + (ARITHMÉTIQUE) ET OR (BITWISE)


Information sur la source

Description

Ce minuscule programme illustre simplement la différence entre un + et un OR, suite à une discussion sur une des sources.
Le but est simplement de montrer les différences entre l'addition et le OR logique, sur 2 valeurs entre 0 et 255, avec représentation en binaire.
NB: Le code n'est pas commenté ni particulièrement soigné.

 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de BruNews le 15/08/2006 11:33:35 administrateur CS

Ne le prends pas mal mais 'or' et '+' n'ayant aucun rapport, je ne vois pas trop l'intérêt de cette source.
Sur ce modèle tu pourrais en faire des milliers, il suffit d'indiquer aux gens d'aller étudier l'algèbre de Boole.

signaler à un administrateur
Commentaire de Alain Proviste le 15/08/2006 12:23:09 administrateur CS

étant donné qu'il y a un cas où or et + ont le même "résultat", certaines personnes peuvent confondre, mais bon sinon comme tu dis, interet 0/20, faut que les gens essaient de comprendre certaines choses par eux mêmes...

signaler à un administrateur
Commentaire de Renfield le 15/08/2006 14:37:26 administrateur CS

Aucun rapport entre '+' et 'Or', c'est vrai, et c'est bien là que le bât blesse...

Beaucoup utilisent en effet '+' a tord et a travers, pour concaténer des String, ou combiner des Flags.

signaler à un administrateur
Commentaire de Cacophrene le 15/08/2006 19:45:01

Salut !

Dès que a et b sont des puissances de 2 distinctes, on a a Or b = a + b. Si a = b alors ce n'est déjà plus toujours vrai (ex. a = b = 4). Si a et b ne sont pas des puissances de 2 (et sont tous deux non nuls), c'est toujours faux.

Malheureusement le seul cas où c'est toujours vrai... ben c'est celui dans lequel on se trouve lorsqu'on manipule les constantes des MsgBox, des attributs de fichiers, etc... :-(

Sauf erreur c'est seulement avec les APIs, quand on sort de ce cadre, que les problèmes font surface (et généralement on a déjà pris des habitudes à ce moment-là).

Conclusion bébête du jour : VB est trop permissif.

Cordialement,
Cacophrène

signaler à un administrateur
Commentaire de jean_marc_n2 le 15/08/2006 22:03:38

brunews: je le sais, bien évidemment! Il se trouve comme le signale justement renfield que tous ne le savent pas, par exemple ceux qui "additionnent" les flags avec un "+" au lieu d'un OR; Quand à faire étudier l'algèbre de Boole, je pense que si on faisait un sondage sur ce forum en demandant à tous 1) ce qu'est l'algèbre de Boole, 2) de faire les tables de vérité de OR, AND et XOR, on serait assez surpris, amha...

Alain: exact, aucun intérêt si ce n'est de fournir une vue didactique de la chose via la représentation binaire.

Cacophrène: Oui VB est sans doute trop permissif, ce qui n'est pas une raison pour en profiter :-)

Merci à tous pour vos commentaires :-)

signaler à un administrateur
Commentaire de asimengo le 17/08/2006 09:52:20

Ce qu'on devrait comprendre ici est qu'il est préférable d'utiliser le "OR" pour les combinaisons des valeurs d'énumérations par exemple plutôt que le "+".

L'utilisation du "+" est délicate sauf pour des utilisateurs avertis (connaissance élémentaire sur les bases en arithmétique) et n'a pour seul intérêt qu'une lecture aisé du code.

signaler à un administrateur
Commentaire de jean_marc_n2 le 17/08/2006 21:22:38

Hello,
merci pour ton commentaire mais je pense alors que j'ai mal expliqué le but de cette source :-((

Le but était de faire comprendre qu'il ne faut **JAMAIS** utiliser le signe "+" pour effectuer une opération binaire, car le "+" ne fait **PAS** une opération bit à bit. L'idée était de montrer qu'il faut **TOUJOURS** utiliser le OR, tout simplement parce qu'il est fait pour ça, contrairement au "+" qui n'est QUE une addition arithmétique.

Le fait que le résultat d'un OR et d'un "+" entre 2 valeurs soit parfois identique n'est qu'anecdotique! Il n'y a *aucune* raison (bonne ou mauvaise) pour utiliser le signe "+" pour faire des opérations bit à bit, ça ne marche tout simplement PAS. Le fait que 2 OR 4 soit "égal" à 2 + 6 n'est qu'un accident, ces 2 nombres ayant des représentations en binaire ou les "1" ne se "supperposent" pas, mais c'est tout...

Sniff, je croyais que le but d'avoir mis cette source ici était limpide...

signaler à un administrateur
Commentaire de jean_marc_n2 le 17/08/2006 21:23:43

je voulais dire 2+4, pas 2+6 bien sur.

signaler à un administrateur
Commentaire de Alain Proviste le 18/08/2006 01:10:11 administrateur CS

ton exemple tu sommes 2 puissances de 2, c'est le seul cas

signaler à un administrateur
Commentaire de asimengo le 18/08/2006 09:26:02

Ecoute Jean_Marc_N2 c'est pas sorcier, l'intérêt que j'ai trouvé à ta source était de relever la nuance ce qui aidera surement nombreux mais y'a beaucoup a qui tu n'apprends rien sur l'utilisation ou pas du "+".

Le terme "accident" que tu utilises est très mal placé et même déroutant il s'agit d'une simple logique mathématique facilement démontrable, c'est pas la peine d'en faire un grand discours.

Bonne Prog

signaler à un administrateur
Commentaire de Kelpan le 21/08/2006 01:53:22

Si je peux me permettre, une manière plus simple de démontrer le problème du '+'

Public Enum Test
    var1 = 1
    var2 = 2
    var4 = 4
    var1et2 = var1 Or var2
End Enum

Sub Test()
    Debug.Print (var1 Or var1et2) ' = 3 => var1 et var2 => Correct
    Debug.Print (var1 + var1et2) ' = 4 => var4 => Incorrect
End Sub

signaler à un administrateur
Commentaire de clubpsr le 21/08/2006 10:20:30

Il est aussi intéressant de constater que :

- Le "et" en littérature est en fait un "ou" en logique,
Fromage et dessert (les deux)

- Et que le "ou" en littérature est en fait un "ou exclusif" en logique !!!
Fromage ou dessert (mais pas les deux)

C'est pour ça que certain croit que la logique c'est compliquée, en fait c'est le français qui n'est pas logique :-) (C.F. L'exeption confirme la rêgle)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

**** ENVOYER GRATUITEMENT DES SMS VERS TOUS LES OPERATEURS FRANCAIS **** [ par omnikod ] Avec SMS Sender, vous pouvez envoyer des SMS vers tous les mobiles français gratuitement. Parmi les options de SMS Sender, il est possible d'envoyer d booléen=false ->ligne en gras ... [ par thrakkazz2000 ] bonjour, je cherche un moyen d'afficher sous forme de tableau des données. Ces données ne sont pas des données obtenues par une requète sql (en fait c Logique base de données [ Défis POUR PRO DE LA LOGIQUE ] [ par Symcod ] Bonjours à tous, cas spécial j'ai jamais vu cela mais faut que je le réalise Situation: Table : T_CLIENT Equation logique [ par obacqueville ] Salut je suis a la recherche d'une fonction qui resoud les equations logiques sous un environnement VBA.merci olivier.bacqueville@caramail.com valeur par défaut d'un booléen [ par myrzhin21 ] alor pour expliquer mon problèmec'est que je veux qu'il existe deux valeurs par défaut possibl selon les caspour un champs o_Validation qui est un boo [sql] format d'un booléen [ par math85 ] bonjour, j'ai une requete du style Code: SELECT a.toto=0 as val from [table a]a et il m'affiche bien les infos mais sous forme d'entiers (des 0 et de Quelle logique adopteriez vous ? [ par bibilafrayeur ] Bonjour à tous.Je post ici afin de savoir comment vous feriez à ma place, ceci afin d'avoir des idées différentes des miennes. Il n'est pas question i Requete SQL et booléen [ par tapas64 ] Bonjour.Eh oui j'ai encore un petit pb de requête:Set rs9 = db.OpenRecordset("SELECT [DateO], [SituationCliniqueO], [ReevaluationEtatCliniqueO], [Cont formater un lecteur logique sous xp [ par douns96 ] je vouddrai connaitre le code pour formater un DD avec une part. logique sous xp pro meme la com. format.com ne fonctionne pas.merci et bonne continua Opérateur logique [ par dorian53 ] BonjourEst ce qu'il existe une différence sur la longueur d'évaluation entre &, && et AND en php.Comme en java & (éval courte) && (éval longue)Merci.D


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.