我试图理解| =在c ++中,我有示例代码
int x = 0 ;
x |= 3;
std::cout<<x <<std::endl;
x |= 6;
std::cout<<x <<std::endl;
输出是:
3
7
这怎么可能,它与位加法有关吗?
答案 0 :(得分:8)
这是一个按位或分配。它与x = x |相同3。
以二进制方式按位或相当于“如果它在任一数字中为1,则结果中将为1”。所以x | = 3使得3.然后x是二进制11,而6是二进制110,所以11 | 101 = 111(二进制)= 7(十进制)。
答案 1 :(得分:5)
x |= 3
表示
x = x |3
按位或操作。
答案 2 :(得分:1)
答案 3 :(得分:1)
它是一个按位OR。
首先案例:
0011(3 in decimal)
0000(0 in decimal)
因此,两者的OR是:
0011 OR 0000 = 0011
= 2^0 + 2^1
= 3
对于 second 情况,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