我想知道这个程序是如何工作的:
#include <bitset>
#include <iostream>
const int option_1 = 0;
const int option_2 = 1;
const int option_3 = 2;
const int option_4 = 3;
const int option_5 = 4;
const int option_6 = 5;
const int option_7 = 6;
const int option_8 = 7;
int main()
{
std::bitset<8> bits(0x2);
bits.set(option_5);
bits.flip(option_6);
bits.reset(option_6);
std::cout << "Bit 4 has value: " << bits.test(option_5) << '\n';
std::cout << "Bit 5 has value: " << bits.test(option_6) << '\n';
std::cout << "All the bits: " << bits << '\n';
return 0;
}
我在网站上看过这个例子,但是无法理解这个程序某些部分的工作情况 这里,第一个option5设置为4,然后在主程序“bit.set(option5);”用于将其设置为1(我认为)。那么4分配给整数选项5的用途是什么?
答案 0 :(得分:3)
所以这基本上是一个位数组的高级别。使用非类型模板,在堆栈上创建位数组。
option5
变量用于将第四位(从打印时的背面)设置为1.因此,当您打印出值时,option5
指向的位置中有1位是从后面的位置4。
bitset的构造函数用于将bitset初始化为0b00000010。 set()
函数将指定位置的位设置为1,reset()
函数将指定位置的位设置为0。