gpt4 book ai didi

c++ - 从任意位集子序列中提取 long

转载 作者:行者123 更新时间:2023-11-30 02:08:45 26 4
gpt4 key购买 nike

有没有一种方法可以有效地从位集中提取 CPU 字长的位子序列,而无需单独迭代每个位?有点像

#include <bitset>
#include <iostream>

using namespace std;

int main() {
bitset<100> b;
// Do something with b
// ...

// Now i want sizeof(long) many bits starting at position 50
unsigned long l = (b>>50).to_ulong();
}

如果它会截断位串而不是抛出异常,那会怎样!

最佳答案

您可以创建一个常量位集掩码,它只设置了最低 N 位,例如:

bitset<100> const mask((unsigned long) -1);

然后您可以执行 ((b >> 50) & mask).to_ulong() 来提取位。如果您对“字”的定义与 unsigned long 不同,则需要不同的掩码。

(我把你的左移改为右移,我相信这样会更好。)

足够聪明的编译器可以将其转换为移位并读出结果;我怀疑是否有任何编译器实际上足够聪明。但我怀疑转移的成本超过了转移的成本。

关于c++ - 从任意位集子序列中提取 long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6237214/

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