std::bitset 在 cpp 中的工作
working of std::bitset in cpp
我想知道这个程序是如何工作的:
#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(我是这么想的)。那么上面分配给整数option5的4有什么用??
所以这基本上是一个高级位数组。使用非类型模板在堆栈上创建一个位数组。
option5
变量用于将第四位(打印时从后面开始)设置为 1。因此,当您打印出值时, [=10= 指向的位置有一个 1 ] 也就是从后面数4的位置。
bitset 的构造函数用于将bitset 初始化为0b00000010。 set()
函数将指定位置的位设置为1,reset()
函数将指定位置的位设置为0。
我想知道这个程序是如何工作的:
#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(我是这么想的)。那么上面分配给整数option5的4有什么用??
所以这基本上是一个高级位数组。使用非类型模板在堆栈上创建一个位数组。
option5
变量用于将第四位(打印时从后面开始)设置为 1。因此,当您打印出值时, [=10= 指向的位置有一个 1 ] 也就是从后面数4的位置。
bitset 的构造函数用于将bitset 初始化为0b00000010。 set()
函数将指定位置的位设置为1,reset()
函数将指定位置的位设置为0。