当我使用索引时,我在使用char中的bitsets时遇到问题。
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <bitset>
using namespace std;
int main()
{
char c = 'C';
bitset<7> b(c);
cout << b << endl;
for(int j = 0; j!=7;++j){
cout<<b[j];
}
return 0;
}
结果
1000011
1100001
我一定忘记了一件非常简单的事情。 有人可以解释为什么使用索引时bitset的结果不一样吗?
答案 0 :(得分:1)
你的for循环首先写入最低有效位,这与写入数字时通常所做的相反
答案 1 :(得分:0)
这是因为std::bitset
索引首先从最低有效位开始(在位置0)。
答案 2 :(得分:0)
阅读本文(来自here):
&#34; basic_string,其内容用于初始化bitset: 构造函数解析从pos开始的最多n个字符的字符串读取,解释字符值&#39; 0&#39; 0和&#39; 1&#39;分别为零和一。 请注意,最低有效位由最后一个字符读取(不是第一个);因此,从最右边的字符读取第一个位的位置,以下位使用前面的字符,从右到左。&#34;
因此bitset存储了&#39; c&#39;从右到左,您从左到右访问位。
答案 3 :(得分:-1)
1000011
+ +
| |
v v
b[6] b[0]
你明白了吗?