运算符"|"如何计算两个整数?
How does "|" operator evaluate two integers?
我有一些东西还没有弄清楚;|
操作数如何计算数字?
#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=2
和y=4
.假设x
和y
都是 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。
相关文章:
- C++需要帮助从用户那里获得一个整数,并确保它在另外两个整数之间
- 比较C++中两个整数的最有效和最干净的方法是什么?
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- 为什么将两个浮点数相加会得到一个整数C++?
- 从两个 4x64 位整数数组中获取取模
- 为什么 Clang 和 GCC 中两个无符号整数之和的结果类型不同
- 比较两个整数在C++中与未知 int 类型的相等性
- 创建整数的 2D 数组,该数组将使用两个函数用随机数填充矩阵.我做错了什么?
- 如何组合两个整数向量
- 在两个整数之间交换最右边的N位
- 打印出两个整数之间的偶数
- 为什么将两个总和为 32k >整数相加时得到负数?
- C++ 两个线程,共享几个整数变量
- Python 等效代码,可像C++一样直接附加两个整数
- 是否有任何内置函数可以检查给定的两个数字在给定整数数组中的顺序是否相同?
- 移位运算符如何在查找两个整数中的不同位数?
- 如何安全地比较两个无符号整数计数器?
- 添加两个二进制数(整数数组)
- 运算符"|"如何计算两个整数?
- 如何找出在两个整数的乘积中设置了多少位(等于 1)