[C] Compréhension des symboles: & | = ~

Résolu
cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 - 7 sept. 2005 à 09:41
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013 - 7 sept. 2005 à 10:30
Bonjour à tous,

Voila, j'ai un code sous les yeux et il y a qq symboles que je n'arrive pas à comprendre (je n'ai pas trouvé dans les aides ni dans les livres et, de plus, vous comprendrez que ce n'est pas possible de faire un recherche sur internet avec des caractères comme ceux ci) :

var1[2] |= var2[1]; // Je suppose que c'est du décalage d'octets, mais comment ?
var1[2] &= 0x0f; // Quelle différence avec au dessus ? on ajoute un masque 00010000 à var1 ?
var1[2] &=~ var2[1]; // Que signifie le signe ~ ? quelle différence avec au dessus ?

Merci d'avance.

David, à VERSAILLES

9 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
7 sept. 2005 à 09:56
| : OU binaire.
& : ET binaire.
^ : XOR binaire.
~ : NOT binaire.
3
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
7 sept. 2005 à 10:29
">>" autant C que C++: à ne pas confondre avec le ">>" du cout :)

"^" n'a rien à voir avec un pointeur. par contre: *a te donne le contenu du pointeur a et &a te donne l'adresse de a

XOR = OU exclusif. En gros, 1 OU 1 donne 0 (et non 1 avec un OU simple)
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
3
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
7 sept. 2005 à 10:30
Le XOR est un OU EXCLUSIF.
Le ^ correspond a ce XOR en c/c++. En delphi le ^ correspond a un pointeur.

Le décalage de bit n'est pas spécifique que C++.

Pour les pointeurs, * represente le contenu et & représente l'adresse.
3
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
7 sept. 2005 à 09:53
Pour faire simple :

var1[2]= var1[2] | var2[1]; // Ca equivaut a ca pour la 1ere ligne
Le | et un opérateur binaire (ex : 1001 | 1100 = 1101)

var1[2] = var1[2] & 0x0f;
Le & est aussi un opérateur binaire, et non pas logique comme le &&.
(ex: 1001 & 1100 = 1000)

Pour ce qui est du til (~) je ne sais pas ...

BruNews une réponse au til ?

Shell

P.S Pour ce qui est de la superposition des opérateurs c'est pas grand chos (ex : a 0; a += 4; // On obtient alors a=4)
Ca permet d'eviter de ré-ecrire l'opérande de gauche ( a = a + 4)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
7 sept. 2005 à 09:56
Au fait contrairement a ce que tu as dis, ce ne sont pas des opérateurs de décalage de bits. Les opérateurs de décalage de bits sont >> et <<.

Pour ce qui st du ~ c'est un opérateur qui permet d'obtenir le complément.
Ex : ~0xA7 (10100111 en binaire) est égale à 0x58 (01011000 en binaire)

Shell
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
7 sept. 2005 à 09:59
ymca2003> On te vois plus trop par ici ces temps ci. Sur de nouveaxu projets ?

nitrique> Complément veut simplement dire que ca remplace les 0 par des 1 et les 1 par des 0, ce qui correspond bien au NOT de ymca2003.
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
7 sept. 2005 à 10:03
DeathCrash -> très pris par le boulot depuis quelques mois...
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
7 sept. 2005 à 10:10
De plus, attention à ne pas confondre:
& (ET binaire) avec && (ET logique)
| (OU binaire) avec || (OU logique)

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 1
7 sept. 2005 à 10:19
Fiouf, vous avez étés rapide (et efficaces, surtout).
Merci 3585 DeAtHCrAsH, =88414 ymca2003 et buno pour tous ces renseignements qui m'ont aidés à y voir plus clair.

Par contre, vous me laissez perplexe sur 2 point et demie:
L'opérateur de décalage: >> n'est-il pas réservé à C++ ?
L'opérateur ^ n'est-il pas un pointeur (je pensait que * était l'adresse et ^ le pointeur) ?
De plus, qu'est ce que XOR ?

Re-merci d'avance.

David, à VERSAILLES
0
Rejoignez-nous