Complement logique NON

alainfernandez Messages postés 5 Date d'inscription jeudi 2 décembre 2004 Statut Membre Dernière intervention 10 décembre 2004 - 10 déc. 2004 à 08:18
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 - 10 déc. 2004 à 17:42
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

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 déc. 2004 à 12:11
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
0
alainfernandez Messages postés 5 Date d'inscription jeudi 2 décembre 2004 Statut Membre Dernière intervention 10 décembre 2004
10 déc. 2004 à 12:57
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
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
10 déc. 2004 à 13:40
result=ancienne ~new;
tu veux faire quoi ?
~ est un opérateur unaire (un seul opérande à droite)
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
10 déc. 2004 à 13:52
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.
0

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

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
10 déc. 2004 à 13:54
Ne jamais employer 'new' ni nimporte quel autre mot cle RESERVE du C/C++ comme nom de variable.

ciao...
BruNews, MVP VC++
0
alainfernandez Messages postés 5 Date d'inscription jeudi 2 décembre 2004 Statut Membre Dernière intervention 10 décembre 2004
10 déc. 2004 à 15:28
merci a tous

je vais tester
@+
0
alainfernandez Messages postés 5 Date d'inscription jeudi 2 décembre 2004 Statut Membre Dernière intervention 10 décembre 2004
10 déc. 2004 à 16:25
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)
0
alainfernandez Messages postés 5 Date d'inscription jeudi 2 décembre 2004 Statut Membre Dernière intervention 10 décembre 2004
10 déc. 2004 à 16:36
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)
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
10 déc. 2004 à 17:42
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;
0
Rejoignez-nous