在位集中,我可以将“to_ulong”用于特定范围的位吗?

Posted

技术标签:

【中文标题】在位集中,我可以将“to_ulong”用于特定范围的位吗?【英文标题】:in bitset, can i use "to_ulong" for a specific range of bits? 【发布时间】:2011-01-11 17:47:36 【问题描述】:

我正在做一些需要我访问特定位和位范围的事情。我决定使用 bitset,因为它很容易访问特定的位;如何提取位范围(子集)?

【问题讨论】:

您可能想接受给出的答案。 【参考方案1】:

方法一:

return (the_bitset >> start_bit).to_ulong();

方法 B(在我的机器上比方法 A 快 100 倍):

unsigned long mask = 1;
unsigned long result = 0;
for (size_t i = start_bit; i < end_bit; ++ i) 
    if (the_bitset.test(i))
       result |= mask;
    mask <<= 1;

return result;

【讨论】:

operator[] 应该更快,因为在test() 中没有边界检查。

以上是关于在位集中,我可以将“to_ulong”用于特定范围的位吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 C++ 位集中的位范围子集转换为数字? [复制]

从具有特定日期范围的 SAS 数据集中删除行

在位范围内查找第一个设置位的位置

sql 将单元ID和“硬编码”数据选择到查询结果集中,该结果集可以粘贴到sql开发人员中,用于缺少特定单元的单元

为啥不能在位和中使用作用域枚举?

MS Access 如何将焦点集中在特定的多个报表实例上