簡體   English   中英

了解Java中的字節掩碼

[英]Understanding masking of Byte in Java

我試圖在程序中節省一些空間,並且需要使用字節,所以我進入了一個看起來像這樣的代碼

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);
}  

我不明白這是什么意思? 在塊中,為什么我們使用i >> 4而不是i >> 3,因為每個字節都是8位? 我也看不到口罩在做什么? 我剛開始使用字節碼,任何指向源的鏈接都將有所幫助

這是一些上下文- 源代碼

關於“ i”的最低8位,這是我可以收集的(其中MSB為7位,而LSB為0位):

  • “ i”的高4位中的值表示“數組”的索引。

  • “塊”的值設置為位於“數組”中上述索引處的值。

  • “ i”的1-3位中的值表示要屏蔽的位索引(如果“ block”中該索引處的位為1,則該函數將返回true)。

  • 注意:“ i”的位0似乎未使用。

我知道這不是一個具體的答案,但我希望它能為您指明正確的方向。

我沒有看上下文源代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM