我正在寻找在 64 位整数中置换位的最快方法。
给定一个名为“array”的表,对应于一个排列数组,这意味着它的大小为 64,并填充了从 0 到 63 的唯一数字(即不重复),对应于 64 位整数中的位位置,我可以置换位这边走
bit = GetBitAtPos(integer_, array[i]);
SetBitAtPos(integer_, array[i], GetBitAtPos(integer_, i));
SetBitAtPos(integer_, i, bit);
(by looping i from 0 to 63)
GetBitAtPos being
GetBitAtPos(integer_, pos) { return (integer >>) pos & 1 }
Setbitatpos 也基于相同的原理(即使用 C 运算符),形式为 SetBitAtPos(integer, position, bool_bit_value)
如果可能的话,我正在寻找一种更快的方法来执行此任务。我愿意接受任何解决方案,包括必要时的内联汇编。我很难找到比这更好的方法,所以我想我会问。
我想执行这样的任务以隐藏 64 位生成的整数中的数据(其中第 4 位可以显示信息)。这比说一个 XOR 掩码 imo 好一点(除非我错过了什么),主要是如果有人试图找到相关性。它还允许进行逆运算以不丢失宝贵的位...
但是我觉得这个手术有点贵...
谢谢