我在 C++ Primer 5th edition 这个练习中被问到:
练习 17.10:使用序列 1, 2, 3, 5, 8, 13, 21,初始化在每个位置
bitset
都有一个1
位对应于该序列中的数字的 a。默认初始化另一个bitset
并编写一个小程序来打开每个适当的位。
事实上,我几乎解决了本书的所有练习,但我无法理解这一点。我明白了std::bitset
。
我找到了这样的解决方案:
// init from the sequence: 1, 2, 3, 5, 8, 13, 21
std::bitset<22> bitseq("1000000010000100101110");
std::cout << bitseq << std::endl;
// Default initialize, then turn on.
std::bitset<22> bit_default;
for (auto i : {1, 2, 3, 5, 8, 13, 21})
bit_default.set(i);
std::cout << bit_default << std::endl;
assert(bitseq == bit_default);
但我不知道这是怎么回事以及它是如何工作的?如果正确,请帮助我理解这一点。太感谢各位了!
我不明白这样怎么能1000000010000100101110
代表序列1, 2, 3, 5, 8, 13, 21
?