我试图在一个程序中节省一些空间,并且需要使用byte,我得到了一个看起来像这样的代码
private static final long MAX = 1000000000L;
private static final long SQRT_MAX = (long) Math.sqrt(MAX) + 1;
private static final int MEMORY_SIZE = (int) (MAX >> 4);
private static byte[] array = new byte[MEMORY_SIZE];
private void getbit(Long i)
{
byte block = array[(int) (i >> 4)];
byte mask = (byte) (1 << ((i >> 1) & 7));
return ((block & mask) != 0);
}
我不明白这是什么意思?在块中,既然每个字节都是8位,为什么我们要使用I >> 4,而不是I >> 3?我也不明白口罩是怎么回事?我刚刚开始使用byte,任何到源代码的链接都会很有帮助
下面是一些context - Source Code
发布于 2015-01-05 06:03:57
关于'i‘的最低8位,这是我能收集到的(其中MSB是位7,LSB是位0):
数组数组'i‘的前4位的值表示’‘的索引。块‘
’中上述索引处的值。
我知道这不是一个具体的答案,但我希望它能帮助你指明正确的方向。
不过,我没有看过上下文源代码。
https://stackoverflow.com/questions/27773736
复制相似问题