gpt4 book ai didi

c++ - 从 uint16 boost dynamic_bitset 复制位

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:16:01 26 4
gpt4 key购买 nike

我需要创建 24 位集。第一个 (0) 位必须由 bool 设置。和其他 (1 - 23) 我需要从 uint32 值复制第一位

是否可以使用 dynamic_bitset 来实现?

我试过但错误的代码:

typedef boost::dynamic_bitset<unsigned char> DataType;
DataType bs(24, intValue);
bs.set(0, booleanValue);

最佳答案

只是左移:

    DataType bs(24, intValue);
bs <<= 1;
bs.set(0, boolValue);

Live On Coliru

#include <boost/dynamic_bitset.hpp>
#include <iostream>
typedef boost::dynamic_bitset<unsigned char> DataType;

int main() {
using namespace std; // for readability on SO
cout << hex << showbase;

uint32_t intValue = 0x666;
cout << "input: " << intValue;

DataType bs(24, intValue);

cout << "\n#1: " << bs << " " << bs.to_ulong();

bs <<= 1;
cout << "\n#2: " << bs << " " << bs.to_ulong();

bs.set(0, true);

cout << "\n#3: " << bs << " " << bs.to_ulong();
}

打印:

input: 0x666
#1: 000000000000011001100110 0x666
#2: 000000000000110011001100 0xccc
#3: 000000000000110011001101 0xccd

关于c++ - 从 uint16 boost dynamic_bitset 复制位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33503385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com