为什么 std::bitset<8> 变量无法处理11111111?
Why is the std::bitset<8> variable unable to handle 11111111?
为什么这个程序显示以下输出?
#include <bitset>
#include <cstdio>
#include <iostream>
int main()
{
std::bitset<8> b1(01100100); std::cout<<b1<<std::endl;
std::bitset<8> b2(11111111); std::cout<<b2<<std::endl; //see, this variable
//has been assigned
//the value 11111111
//whereas, during
//execution, it takes
//the value 11000111.
//Same is the case with b1
std::cout << "b1 & b2: " << (b1 & b2) << 'n';
std::cout << "b1 | b2: " << (b1 | b2) << 'n';
std::cout << "b1 ^ b2: " << (b1 ^ b2) << 'n';
getchar();
return 0;
}
这是输出:
01000000
11000111
b1 & b2: 01000000
b1 | b2: 11000111
b1 ^ b2: 10000111
首先,我认为头文件有问题(我使用的是MinGW),所以我使用MSVCC检查。但它也显示了同样的事情。请帮助!
用号码 01100100
和11111111
初始化std::bitset
。只需查看输出:
01000000
11000111
都错了。您用十进制数字11111111
初始化std::bitset
,该数字是二进制表示的101010011000101011000111
。首先是数字01100100
是八进制的,1001000000001000000
是二进制的。std::bitset
取其中最低有效的8位
#include <bitset>
#include <iostream>
#include <string>
int main()
{
std::bitset<8> b1(std::string("01100100")); std::cout<<b1<<std::endl;
std::bitset<8> b2(std::string("11111111")); std::cout<<b2<<std::endl;
std::cout << "b1 & b2: " << (b1 & b2) << 'n';
std::cout << "b1 | b2: " << (b1 | b2) << 'n';
std::cout << "b1 ^ b2: " << (b1 ^ b2) << 'n';
return 0;
}
和正确的输出:
01100100
11111111
b1 & b2: 01100100
b1 | b2: 11111111
b1 ^ b2: 10011011
相关文章:
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 如何处理非default_constructible tyname 变量
- 在通知提升间处理条件变量时未按住锁会导致问题
- Visual C++: MSVC vs. GCC+CLANG: 处理 lambda 捕获类成员变量,正确的方法是什么?
- C++预处理会生成变量成员、资源库和映射
- 如何处理冲突的函数和变量名称?
- C++单个变量来处理来自用户的多个类
- C++11如何在1个线程中使用条件变量处理2个线程安全队列
- 当线程处理不同的类时,应该在哪里声明条件变量、互斥对象
- 当使用lambda进行变量的复杂初始化时,如何处理从内部抛出的lambda外部异常
- 多线程处理中的静态成员变量
- 如何使用模板处理多类型变量?
- 在调用进程的上下文中通过 win32 执行批处理,从而保留环境变量
- 如何处理参数中的基类和指针变量
- 如何获取函数以在 Main() 中重新处理变量
- 从C++输入中收集数据时,是否有更有效的方法可以处理变量
- Visual Studio 2015-用GIT分支和GIT提交定义预处理变量
- 在8位块中处理变量的好方法是什么?
- 在静态初始化列表之前预处理变量
- GCC如何处理变量重定义