我已经看到了正确的字节数组初始化
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。