【发布时间】:2015-04-19 19:08:23
【问题描述】:
我只是在玩一些位运算符,以刷新自己的工作原理。我发现了一些很奇怪的东西,但也许这只是对位运算符如何工作的根本误解。
这个程序:
#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。
【问题讨论】:
-
不,没有附加任何内容 -
16 AND 1 == 0,16 OR 1 == 17。 -
LOL 混淆 C 和 C++ 语义-2.0
-
@wildplasser 你是说
16 and 1和16 && 1一样吗?我正在尝试在 C++ 中查找and运算符的名称,但不记得了……“命名”逻辑运算符是如何调用的? -
@wildplasser,找到了它们,二合字母和三合字母运算符 :)(在逻辑运算符的情况下只是二合字母)
标签: c++ bit-manipulation