正如这个问题的标题所说,我想知道在整数中混合位块的最佳方法(尤其是 64 位无符号)
例如我有 8 位整数,它的位是 0000 1111 混合 4 位乘 4 位 = 0101 0101
示例 2: 0010 0110
0 1 1 0 右 0.0.1.0 左 = 00011100 混合 4 位乘 4 位 = 0001 1100 简单的是,. 充满右块位的地方
我现在在做什么:
uint64_t mix32(uint64_t v) {
uint64_t ret=0;
int x=0;
for(int i=0; i<32; i++) {
setbit(ret, x, getbit(v, i));
x++;
setbit(ret, x, getbit(v, i+32));
x++;
}
return ret;
}
其中 setbit 是一个宏,用于设置或清除某个位置的位。我真正需要的是 将每个 32 位与下一个 32 位混合 将每个 16 位与下一个 16 位混合 将每个 16 位与下一个 16 位混合 将每个 8 位与下一个 8 位 等混合...我希望如果有这样的位操作的一个示例,我可以休息一下。我在谷歌上看了很多,但最终得到的教程没有展示这种情况。
保持良好。