|
|
1
11
如果您可以使用特定于体系结构的指令,那么您很可能能够加快操作速度,而不仅仅是使用位抖动黑客:
例如,如果您为Intel Haswell及更高版本的CPU编写代码,则可以使用包含
现在很多CPU都支持无进位乘法。在手臂上那会是
这里的诀窍是,一个数与其自身的无进位乘法将返回一个位模式,该模式包含参数的原始位,且交错为零位。因此它与上面显示的_pdep_u32(x,0x55555555)相同。E、 g.它将转换以下字节:
进入:
现在,您可以构建xy_to_morton函数,如下所示(CLMUL指令集如下所示):
这是你在主流平台上所能达到的最高水平(例如,带有NEON和x86的现代ARM)。不幸的是,我不知道使用密码指令来加速morton_ux y函数的任何诀窍,我努力了几个月。 |
|
2
8
|
|
3
4
不管比特数是多少,中间代码都是一样的。如果你不需要这么快的话
|
|
no one special · 32位整数缩放,无溢出 8 年前 |
|
|
Benn Tan · 比特操作:更难翻动硬币 8 年前 |
|
|
Ganesh Thampi · 使用位运算符将十进制转换为二进制 8 年前 |
|
|
Ganesh Thampi · 使用位的奇偶程序 8 年前 |
|
|
datapanda · 三维网格的莫顿反向编码 8 年前 |
|
|
rubyquartz · 交换无符号短整数的字节 8 年前 |
|
|
John Proctor · C中位的掩蔽范围 8 年前 |
|
|
Areg Sarvazyan · 从无符号int中提取位的函数 8 年前 |
|
|
user9505617 · 按位异或0xFFFFFFFF? 8 年前 |