我已经看到了正确的字节数组初始化
byte[] a = new byte[8];
但是,这是什么意思?
byte[] bitfield = new byte [0xFFFFFFF/8];
n = 18; // some integer
bitfield [n / 8] |= 1 << (n % 8);
还请解释0xFFFFFFF/8
这里的含义。
我已经看到了正确的字节数组初始化
byte[] a = new byte[8];
但是,这是什么意思?
byte[] bitfield = new byte [0xFFFFFFF/8];
n = 18; // some integer
bitfield [n / 8] |= 1 << (n % 8);
还请解释0xFFFFFFF/8
这里的含义。
0xFFFFFFF/8
只是一个值(268435455)除以 8,将数组初始化为该大小(当然是截断)。
在下一步中,我们获取n
并设置 element n/8
,或 2 由于截断,与按位 OR1<<(n%8)
或 1 向左移动(n%8)
位相同的元素。这相当于:
bitfield[n/8] = bitfield[n/8] | (1 << (n % 8))
请注意,1<<(n%8)
等于2^(n%8)
where(n%8)
是余数 whenn
除以 8。
简而言之,无需详细说明,该构造表示带有字节数组的位集,该字节数组允许根据其位置随机访问各个位。
0xFFFFFFFF
是十六进制的整数文字。然后除以 8。