繁体   English   中英

C ++按位运算

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM