按位 AND/OR 运算符正在追加

Bitwise AND/OR Operator is Appending?

本文关键字:追加 运算符 OR AND 按位      更新时间:2023-10-16

我只是在玩一些按位运算符来刷新它们的工作原理。我发现了一些非常奇怪的东西,但也许这只是对按位运算符工作方式的根本误解。

此程序:

#include <iostream>
using namespace std;
int main() {
    int base = 16;
    cout << (base << 2) << endl;
    cout << (base >> 2) << endl;
    cout << (base &  0b0001) << endl;
    return 0;
}

输出此内容:

64
4
0

前两个我预料到,但最后一个0似乎有点奇怪(没有双关语),因为我期望看到1.如果我这样做base | 0b0001我会17.似乎位模式被附加到最后。这是应该发生的事情,还是我在这里错过了什么?

我正在使用 G++ v4.8.2。

请记住,base16,即 二进制10000。现在和它一起00001,看看发生了什么。

10000 & 00001 = 0 ->0 在任何碱基中

10000 | 00001 = 10001 -> 17 十进制