首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >理解Java中的字节掩码

理解Java中的字节掩码
EN

Stack Overflow用户
提问于 2015-01-05 13:08:13
回答 1查看 495关注 0票数 1

我试图在一个程序中节省一些空间,并且需要使用byte,我得到了一个看起来像这样的代码

代码语言:javascript
代码运行次数:0
运行
复制
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

EN

回答 1

Stack Overflow用户

发布于 2015-01-05 14:03:57

关于'i‘的最低8位,这是我能收集到的(其中MSB是位7,LSB是位0):

数组数组'i‘的前4位的值表示’‘的索引。块‘

  • ’的值被设置为位于‘

’中上述索引处的值。

  • 'i‘的第1-3位中的值表示要屏蔽的位索引(如果'block’中该索引处的位为1,则函数将返回true )。
  • 注意:“I”的第0位似乎未使用。

我知道这不是一个具体的答案,但我希望它能帮助你指明正确的方向。

不过,我没有看过上下文源代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27773736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档