gpt4 book ai didi

javascript - 去交错字节

转载 作者:行者123 更新时间:2023-11-29 14:52:41 25 4
gpt4 key购买 nike

给定一个交错的位序列:

ABABABABABABABAB

我可以使用什么 javascript 按位运算将其转换为序列:

AAAAAAAABBBBBBBB

最佳答案

这被称为 unshuffle (另请参阅 Hacker's Delight 7.2,混洗位)。

Hacker's Delight 中给出的算法是:

t = (x ^ (x >> 1)) & 0x22222222;  x = x ^ t ^ (t << 1); 
t = (x ^ (x >> 2)) & 0x0C0C0C0C; x = x ^ t ^ (t << 2);
t = (x ^ (x >> 4)) & 0x00F000F0; x = x ^ t ^ (t << 4);
t = (x ^ (x >> 8)) & 0x0000FF00; x = x ^ t ^ (t << 8);

这些右移可以是逻辑的或算术的,带有掩码的 AND 确保受该差异影响的位无论如何都不会出现在 t 中。

这是针对 32 位数字的,对于 16 位数字,您可以切掉每个掩码的左半部分并跳过最后一步。

这是一个增量交换序列,请参阅计算机编程艺术第 4A 卷,按位技巧和技术,位交换。

关于javascript - 去交错字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22984671/

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