[英]C++ bitwise operations
我正在对两个整数的各个位进行操作,(我在Ubuntu机器上使用g ++进行编译)。
在一些中间步骤中,我将位表示为
q = 11000000000000000000000000000000
q_1 = 00000000000000000000000000000001
现在,我要检查q和q_1的单位位置是否相同。 因此,我正在检查if条件中的(*q)&1==q_1
,它的工作正常。
但是每当我想检查q的单位位置是否为0且q_1的单位位置为1时,我都认为我应该这样做((*q)&1==0) && (q_1==1)
,但它不能作为预期。 进行调试,我cout
编的值((*q)&1==0)
和(q_1==1)
单独地和他们得到了打印为1
。 但是, ((*q)&1==0) && (q_1==1)
被打印为0。为什么?
* 编辑:*在函数中,q是通过引用传递的,所以我正在使用* q来获取值。
在C和C ++中,按位&
运算符实际上优先于等价运算符==
。 您需要将按位运算符包装在括号中。
所以:
((*q)&1==0) && (q_1==1)
应该:
(((*q)&1)==0) && (q_1==1)
请参阅: http : //en.cppreference.com/w/cpp/language/operator_precedence
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.