令人困惑的字节数组

时间:2013-09-04 20:28:02

标签: java byte bit-fields

我已经看到正确的字节数组初始化如

byte[] a = new byte[8];

但这是什么意思?

byte[] bitfield = new byte [0xFFFFFFF/8];
n = 18;  // some integer
bitfield [n / 8] |= 1 << (n % 8);

还请解释0xFFFFFFF/8在这里的含义。

3 个答案:

答案 0 :(得分:2)

0xFFFFFFF/8

只是一个值(268435455)除以8,将数组初始化为该大小(当然是截断的)。

在下一步中,我们得到n并将元素n/8或2设置为截断,是与1<<(n%8)或左移{1}的按位OR相同的元素1}}位。这相当于:

(n%8)

请注意bitfield[n/8] = bitfield[n/8] | (1 << (n % 8)) 等于1<<(n%8),其中2^(n%8)(n%8)除以8时的余数。

答案 1 :(得分:0)

简单地说,并且没有详细说明,该构造表示一个带有字节数组的bitset,允许根据它们的位置随机访问各个位。

答案 2 :(得分:0)

0xFFFFFFFF是十六进制的整数文字。然后除以8。