按位 AND/OR 运算符正在追加
Bitwise AND/OR Operator is Appending?
我只是在玩一些按位运算符来刷新它们的工作原理。我发现了一些非常奇怪的东西,但也许这只是对按位运算符工作方式的根本误解。
此程序:
#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。
请记住,base
是16
,即 二进制10000
。现在和它一起00001
,看看发生了什么。
10000 & 00001 = 0
->0 在任何碱基中
10000 | 00001 = 10001
-> 17 十进制
相关文章:
- 为什么比较运算符如此快速
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 使用C++中的模板和运算符重载执行矩阵运算
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 增量运算符与后缀混淆
- 一个关于在C++中重载布尔运算符的问题
- 运算符C++ "delete []"仅删除 2 个前值
- 模板类无法识别友元运算符
- 我可以使用条件运算符初始化C风格的字符串文字吗
- 关闭||运算符优化
- 通过继承类使用来自不同命名空间的运算符
- C++Cast运算符过载
- 如何使用AngelScript注册SFML Vector2运算符
- 重载元组索引运算符-C++
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- C++ 字符串追加和运算符 += 之间的区别
- 通过重载运算符 [] 追加到数组
- 按位 AND/OR 运算符正在追加
- C++Segfault追加、push_back和运算符=或+=