gpt4 book ai didi

c++ - 从位置 i 开始生成 n 个掩码的最快方法

转载 作者:可可西里 更新时间:2023-11-01 16:28:04 24 4
gpt4 key购买 nike

从位置 pos 开始,生成 len 位设置为 1 的掩码的最快方法是什么(就常见现代架构的 cpu 周期而言):

template <class UIntType>
constexpr T make_mask(std::size_t pos, std::size_t len)
{
// Body of the function
}

// Call of the function
auto mask = make_mask<uint32_t>(4, 10);
// mask = 00000000 00000000 00111111 11110000
// (in binary with MSB on the left and LSB on the right)

另外,是否有任何编译器内部函数或 BMI有什么帮助?

最佳答案

最快的方法?我会使用这样的东西:

template <class T>
constexpr T make_mask(std::size_t pos, std::size_t len)
{
return ((static_cast<T>(1) << len)-1) << pos;
}

关于c++ - 从位置 i 开始生成 n 个掩码的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39321580/

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