什么算法可以为LUT中的每个任意32位数保存一位存储空间

时间:2017-01-21 15:02:20

标签: algorithm compression lossless

查找表总共有4G条目,每个条目都是32位任意数,但它们从不重复。 是否有任何算法能够利用每个条目的索引及其(索引)值(32位数)来使该值的固定位置位始终为零(因此我可以利用该位作为标志来记录某些东西)。我可以通过反向计算来检索32位数。 或者退一步说,我是否可以将每两个连续条目的固定位置总是为零?

我的问题是,是否有任何通用代码可以使每个任意32位数字保存1位。所以我可以利用这个位作为锁定标志。或者,有没有办法可以通过一些计算来利用索引及其查找表条目的值来节省值的1位存储。

1 个答案:

答案 0 :(得分:2)

你所要求的并不清楚。但是我可以在那里找到一件可以解决的问题,如果我正确地阅读它,那就是你对 0..2 32 中所有整数的排列 - 1 。这种置换可以用比直接表示更少的位来表示,直接表示取 32 * 2 32 位。通过完美呈现排列,每个都是 ceiling(log 2 (2 32 !))位,因为有 2 32 可能的排列。该长度证明是直接表示中的比特的大约95.5%。因此,每个置换可以用 30.6 * 2 32 位表示,每个字有效地取出多个位。