gpt4 book ai didi

c++ - 将无符号整数中两位设置为一位的最快函数

转载 作者:可可西里 更新时间:2023-11-01 18:25:32 26 4
gpt4 key购买 nike

我有一个在 super 计算机上进行模拟的算法,需要使用大量的位操作。一些操作需要掩码,尤其是像这样的函数:

template <typename Type,
class = typename std::enable_if<std::is_integral<Type>::value>::type,
class = typename std::enable_if<std::is_unsigned<Type>::value>::type>
inline Type mask(const std::size_t first, const std::size_t last)
{
// Something
}

这将生成类型为 Type 的掩码,其中 [first, last[ 范围内的位设置为 1(firstlast 是运行时变量)

例如:

mask<unsigned char>(3, 6) -> 00111000

我将需要数千亿个这样的掩码,因此我需要尽可能优化此函数(但在普通标准 C++11 中)。怎么做?

最佳答案

return (1 << last) - (1 << first);

关于c++ - 将无符号整数中两位设置为一位的最快函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21270616/

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