繁体   English   中英

如何设置位?

[英]How to set bits?

我有一个远程服务,该服务接收许多参数和一个整数来标记哪些为空:

byte<(param_count + 7)/8> null bitmap

我尝试过一个简单的实现,但是由于我没有移位的经验,所以我不想展示它。

那么,给定布尔向量,如何创建位图?

如果在编译时知道param_count则可以使用std::bitset 这是一个例子:

// Define a bitmap with 'param_count + 7' elements
std::bitset<param_count + 7> b;

// Set the fifth bit, zero is the first bit
b[4] = 1;

// Convert to 'unsigned long', and the casting it to an int.
int a = int(b.to_ulong());

如果在编译时知道param_count则可以使用std::vector<bool> 这是另一个示例:

// Define a bitmap with 'param_count + 7' elements
std::vector<bool> b(param_count + 7);

// Set the fifth bit, zero is the first bit
b[4] = 1;

// Convert to 'int'
int a = std::accumulate(b.rbegin(), b.rend(), 0, [](int x, int y) { return (x << 1) + y; });

std::vector<bool>int的转换是从此答案获取的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM