推断最简单的方法将位阵列1转换为位阵列2

时间:2013-05-13 23:57:22

标签: bit-manipulation hilbert-curve

考虑长度为n的所有位数组的集合。现在考虑从该集映射到此集的所有1对1函数的集合。

现在从后一组中选择一个功能。是否有任何算法可以找到实现此功能的“最小”方法?假设我们只能访问基本位数组运算符,例如AND OR XOR NOT和左右位移。

如果你想知道,我想要这个的原因是因为我正在编写一个算法,用于将比特的z曲线排序转换为比特的hilbert曲线排序。我目前的方法是制作一个查找表,但我敢打赌,这是一个更好的选择。

举一个简单的例子,假设我有一个如下所示的真值表:

00 -> 10
01 -> 01
10 -> 00
11 -> 11

然后我应该能够推断出,给定输入位串input,输出位串output是(在java语法中)

output = ((~input) << 1) ^ input

以下是本案例的证据:

00 -> 11 -> 10 -> 10
01 -> 10 -> 00 -> 01
10 -> 01 -> 10 -> 00
11 -> 00 -> 00 -> 11

0 个答案:

没有答案