怎么"|" 运算符评估两个整数?

Cha*_*les -4 c++

我有一些东西尚未包裹我的脑袋; |操作数如何评估数字?

#include<iostream>

int main()
{
    int x, y, z;
    x = 2;
    y = 4;

    z = x | y;
}
Run Code Online (Sandbox Code Playgroud)

为什么z在这种情况下获得6分配; 这是如何运作的?

Ach*_*hal 9

运算符|称为按位OR.它的真值表是

A  B   A|B ( operate on bits)
----------
0  0    0
0  1    1
1  0    1
1  1    1 
Run Code Online (Sandbox Code Playgroud)

你的情况x=2y=4.通过假设两个xy是32位的整数,而这样做x | y只是按照上面的表格.看起来像

    MSB                                        LSB <-- little enidian
x = 0000 0000 | 0000 0000 | 0000 0000 | 0000 0010
                                                |
y = 0000 0000 | 0000 0000 | 0000 0000 | 0000 0100                                           
-------------------------------------------------
z = 0000 0000 | 0000 0000 | 0000 0000 | 0000 0110 => 6
--------------------------------------------------
Run Code Online (Sandbox Code Playgroud)