我有兴趣创建一个类来存储更多协议庄园的数据,我知道我可以轻松地存储0到2 ^(x)-1之间的数字,以及使用按位运算符的布尔值,但是我我对更奇怪的数字感兴趣,比如最多6或者其他东西。 我已经在脑子里摆弄了大约一个星期,现在已经谷歌搜索了大约一个小时,但我真的找不到任何帮助。
我正在寻找一种算法或其他东西来帮助我弄清楚如何最好地打包介于0和1到32之间的随机数之间的数据......
我只是头脑风暴,想知道是否应该看看这样的压缩。我正在研究这个问题的原因之一是大型阵列等。对不起,如果这是一个愚蠢的问题,我的大脑最近并不是很敏锐。
此外,最大值的示例:1,5,8,3,12,19
我想到的最终课程将是:
public class MyObject{
private long packed;
...
public int getA(){...}
public void setA(){...}
public int getB(){...}
public void setB(){...}
感谢您的帮助,~vzybilly~
答案 0 :(得分:0)
作为一般性问题,它对程序员来说并不是很有趣 - 可能是数学家/信息理论家。具体的例子很有趣,但在当今记忆力充沛的世界中并不重要,但你和计算机所做的其他工作都比较稀缺。
让我们说你必须存储1-6号范围内的一系列数字。你可以在32位整数中拟合其中的12个,如6 ^ 12< 2 ^ 32。但是现在每当你访问数据时你都有额外的算术运算,基本上可以看到输入模数6 ^ n + 1中有多少6 ^ n。这是因为无论您使用哪种表示,都需要在速度和紧凑性方面进行权衡。 "最佳"在实践中意味着直截了当。
不是说没有时间节省空间是免费的,优质的,但是这个问题只有那些已经具备解决问题的人才能解决,在需要它的情况下。