2013-04-06 102 views
1

我想了解| =在C++中,我有示例代码在C++中意味着什么?

int x = 0 ; 

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

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

输出为:

3 
7 

这怎么可能,这是否与位加法?

+0

您可以通过查看C++运算符列表,然后使用Google搜索名称来回答此问题。 – chris 2013-04-06 00:19:06

+1

你所指的是一个按位或运算符。它比较所有的位,然后结果包含两个操作数的最高有效位(1,0)。例如: '1111000 | 0000111 = 1111111' **这不是一个加法**,尝试x = 72 | 184 ==> x = 248 – DOOM 2013-04-06 00:25:07

回答

1

它是一个按位或。

首先情况:

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

因此,两者的OR是:

0011 OR 0000 = 0011 

= 2^0 + 2^1 
= 3 

对于第二情况下,或工作原理如下:

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

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

0011 OR 0110 = 0111 

= 2^0 + 2^1 + 2^2 
= 1+2+4 
= 7 
8

这是一个按位或分配。它与x = x |相同3.

二进制按位或等同于“如果它是任一数字中的1,它将在结果中为1”。所以x | = 3使得3。然后x在二进制中是11,而6是在二进制中110,所以11 | 101 = 111(二进制)= 7(十进制)。

5
x |= 3 

装置

x = x |3 

按位或运算。