在cpp中使用std :: bitset

时间:2016-02-06 04:18:27

标签: c++ bitset

我想知道这个程序是如何工作的:

#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的用途是什么?

1 个答案:

答案 0 :(得分:3)

所以这基本上是一个位数组的高级别。使用非类型模板,在堆栈上创建位数组。

option5变量用于将第四位(从打印时的背面)设置为1.因此,当您打印出值时,option5指向的位置中有1位是从后面的位置4。

bitset的构造函数用于将bitset初始化为0b00000010。 set()函数将指定位置的位设置为1,reset()函数将指定位置的位设置为0。