Complement logique NON

Signaler
Messages postés
5
Date d'inscription
jeudi 2 décembre 2004
Statut
Membre
Dernière intervention
10 décembre 2004
-
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
-
sous borland tc, je cherche a faire un complement logique NON sur une variable ex 1110 devient 0001
j'utilise l'operateur ~ pour cela
Mais rien

9 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Rien du tout ou mauvais résultat? Si tu inverse tout, ca va aussi inverser les 0 de poids fort, donc tu n'aura pas le résultat voulu. Pour faire ce que tu veux, il faux que tu inverses tous les bits a partir du premier 1 rencontré en commencant par la gauche
Messages postés
5
Date d'inscription
jeudi 2 décembre 2004
Statut
Membre
Dernière intervention
10 décembre 2004

je me suis mal exprime

j'ai 0 en result
on dirait qu'il ne comprend pas le tilde representant le NON**

ci joint partie du prog

int result=0;
char binaire[16};
ancienne=127;
new=3;
result=ancienne ~new;
convers(result,binaire);
printf"CPL : \s",binaire);

par contre avec XOE ou ET et meme appel foction tout est OK

result=ancienne^new ou bien ancienne&new

Merci
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
result=ancienne ~new;
tu veux faire quoi ?
~ est un opérateur unaire (un seul opérande à droite)
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
12
Salut,
Tout à fait, tu ne peux pas mettre ~ entre deux variables. Cet opérateur inverse les bits d'une seule variable:
result = ~ancienne;
Si ancienne vaut 01111111 alors result vaudra 10000000.
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
24
Ne jamais employer 'new' ni nimporte quel autre mot cle RESERVE du C/C++ comme nom de variable.

ciao...
BruNews, MVP VC++
Messages postés
5
Date d'inscription
jeudi 2 décembre 2004
Statut
Membre
Dernière intervention
10 décembre 2004

merci a tous

je vais tester
@+
Messages postés
5
Date d'inscription
jeudi 2 décembre 2004
Statut
Membre
Dernière intervention
10 décembre 2004

merci voila ce que j'ai
a=136 b=9
resultat du ou exclusif =129 ok
result du et 128 mais il me rend en decimal -129
d'ou 0 du Not
en fait cela est fait afin de tester sur des entrees carte logique les ports qui ont changes et ausii de savoir dans quel sens ils ont changes ((1 ou 0)
Messages postés
5
Date d'inscription
jeudi 2 décembre 2004
Statut
Membre
Dernière intervention
10 décembre 2004

dans mon mail precedent je dit qu'il me rend -129
c'est en fait le Not128 qui me rend cela

je fais resultNot=~resultET

je trouve donc resultNot=0 (-129)
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
12
J'avais oublié de préciser que la variable qui contiendra le résultat de l'opérateur ~ doit être du même type que l'opérande, sinon le résultat ne sera pas correct. Je pense que tu veux travailler avec des octets, dans ce cas:
BYTE ancienne=0x7F;
BYTE result=0;
result =~ancienne;