2010-05-22 33 views
2

Je suis assez nouveau pour les opérateurs au niveau du bit. Disons que j'ai 3 variables a, b et c, avec ces valeurs en binaire:Utilisation d'un AND binaire sur plus de deux bits

a = 0001 
    b = 0011 
    c = 1011 

Maintenant, je veux effectuer une opération de bits et comme ceci:

a 
AND b 
AND c 
-------- 
d = 0001 

d &= a &= b &= c ne fonctionne pas (comme je m'y attendais), mais comment puis-je faire cela? Merci

Répondre

17

Quel est le problème avec juste cela.

d = a & b & c; 
+0

Oh, bien sûr. J'ai oublié que je peux les utiliser sans '='. Merci! –

3

Vous voulez:

d = a & b & c; 

&= signifie et au niveau du bit également attribuer.

Si d était à l'origine assinged être 0 votre expression comme vous le dites serait toujours évaluer à 0 parce que tout &0 sera égal 0.

1

cela devrait fonctionner

int a = 1; // 0001 
int b = 3; // 0011 
int c = 11; // 1011 
int d = 0; 

d = a & b & c; 
0

Vous avez probablement juste oublié d'initialiser « d » d'être tous des 1, et il fait défaut à 0. Vous pouvez facilement régler tous les bits à 1 en affectant d = -1, ou si vous préférez, d = 0xffffffff, bien que puisque vous n'utilisiez que 4 bits, d = 0xF aurait suffi. Cela dit, les opérateurs de marguerite comme ceci ont tendance à être moins lisibles que de casser les choses comme d'autres l'ont suggéré.