1

我试图理解 |= 在 c++ 中,我有示例代码

 int x = 0 ;

 x |= 3;
 std::cout<<x <<std::endl;

 x |= 6;
 std::cout<<x <<std::endl;

输出是:

3
7

这怎么可能,它与位加法有关吗?

4

4 回答 4

7

这是一个按位或和赋值。它与 x = x | 相同。3.

在二进制位中或等效于“如果任一数字为 1,则结果中为 1”。所以 x |= 3 等于 3。那么 x 在二进制中是 11,而 6 在二进制中是 110,所以 11 | 101 = 111(二进制)= 7(十进制)。

于 2013-04-06T00:14:07.390 回答
4
x |= 3 

方法

x = x |3

按位或运算。

于 2013-04-06T00:14:21.970 回答
1

它是按位的

或者

然后赋值。这意味着与 相同x = x | 3关于按位或

于 2013-04-06T00:18:19.383 回答
1

它是按位或。

一种情况:

0011(3 in decimal)
0000(0 in decimal) 

因此,两者的 OR 为:

0011 OR 0000 = 0011

= 2^0 + 2^1 
= 3 

对于第二种情况,OR 的工作方式如下:

0011 (3 in decimal) 
0110 (6 in decimal)

OR的输出是0111,十进制是:

0011 OR 0110 = 0111

= 2^0 + 2^1 + 2^2 
= 1+2+4 
= 7
于 2013-04-06T00:20:18.753 回答