Vin*_*ent 5 c++ recursion bit template-meta-programming c++14
该位摆弄黑客网站提出以下建议非常有效的功能,以扭转位:
// Bitswap: reverse the bits of the value of unsigned integral type T
template <class T>
constexpr T bitswap(T src)
{
constexpr std::size_t char_bit = std::numeric_limits<unsigned char>::digits;
constexpr std::size_t digits = sizeof(T) * char_bit;
std::size_t size = digits;
T mask = ~T();
while ((size >>= 1) > 0) {
mask ^= (mask << size);
src = ((src >> size) & mask) | ((src << size) & ~mask);
}
return src;
}
Run Code Online (Sandbox Code Playgroud)
__uint128_t?(原始版本适用__uint128_t)digits正确初始化为正确的位数,这个函数理论上是否可以使用两个位的非幂来反转类型的位?(例如一个低温的uint41_t).| 归档时间: |
|
| 查看次数: |
318 次 |
| 最近记录: |