相关疑难解决方法(0)

如何解交织比特(UnMortonizing?)

从32位int解交织比特的最有效方法是什么?对于这种特殊情况,我只关注奇数位,尽管我确信将两个集合的任何解决方案概括为简单.

例如,我想转换0b010001010b1011.什么是最快的方式?

编辑:

在这个应用程序中,我可以保证偶数位都是零.我可以利用这个事实来提高速度或减少空间吗?

bit-manipulation z-order-curve

23
推荐指数
1
解决办法
3089
查看次数

从8位复制到32位

我正在尝试将8位值复制到32位,并想问问是否有可能编写单行算法来复制位值。

例如:

1100 1011 -> 1111 1111 0000 0000 1111 0000 1111 1111
Run Code Online (Sandbox Code Playgroud)

如果有可能,我想了解其背后的逻辑。

c bit-manipulation duplicates expansion

2
推荐指数
2
解决办法
313
查看次数

在一个字中间隔位的快速方法是什么?

我在64位寄存器的低位部分有一个32位值;顶部部分是 0。让我们X用信息来表示一个位,并用从 LSB 到 MSB 列出的位来表示,如下所示:

X X X  ...  X 0 0 0 0 ... 0
Run Code Online (Sandbox Code Playgroud)

现在,我想用信息“间隔”这些位,这样我就有了

X 0 X 0 X 0 ... X 0
Run Code Online (Sandbox Code Playgroud)

(或者如果你想把 0 放在前面,那么

0 X 0 X 0 X 0 ... X
Run Code Online (Sandbox Code Playgroud)

也很好。)

有什么快速的方法可以做到这一点?

与多 CPU 架构相关的答案会很好,但特定于 Intel x86_64 和/或 nVIDIA Pascal SM 的答案将是最相关的。

performance bitwise-operators

1
推荐指数
1
解决办法
472
查看次数