运算符"|"如何计算两个整数?

How does "|" operator evaluate two integers?

本文关键字:整数 两个 何计算 运算符 计算      更新时间:2023-10-16

我有一些东西还没有弄清楚;|操作数如何计算数字?

#include<iostream>
int main()
{
int x, y, z;
x = 2;
y = 4;
z = x | y;
}

为什么在这种情况下z被分配了 6;这是如何工作的?

运算符|称为按位 OR。其真值表为

A  B   A|B ( operate on bits)
----------
0  0    0
0  1    1
1  0    1
1  1    1 

在您的情况下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
--------------------------------------------------

|表示按位或。OR应用于每个位。(4 变为 100,2 变为 10(:

4    0100
OR 2    0010
------------
== 6    0110
------------

按位 OR 一起产生 110,即 6。


请注意,这不是附加的,也没有像+运算符那样携带位。

所以例如:

6    0110
+ 2    0010
------------
== 8    1000
------------

但:

6    0110
OR 2    0010
------------
== 6    0110
------------

这很简单。"|"称为按位运算符。如果其中任何一个位为 1,它将返回 1。如果两位均为 0,则此运算符将返回 0。

x = 2,即 00000010(以位表示形式( y = 4,即 0000 0100

现在,如果您应用"|",结果将变为 0000 0110,即 6。