了解Java BitSet类的实现

时间:2015-10-03 16:00:13

标签: java bitset

当我尝试测试它并理解它时,BitSet对象提供了一些不太清楚的结果。

主:

byte f = (byte)0b00101000;
byte s = (byte)0b11111111;
byte[] bytes = new byte[]{f, s};
BitSet bs = BitSet.valueOf(bytes);

printlnLog("Input bitset: " + bs);
printlnLog("Input bitset length: " + bs.size());

输出:

Input bitset: {3, 5, 8, 9, 10, 11, 12, 13, 14, 15}
Input bitset length: 64

输出对我没有意义。我不明白BitSet的基础逻辑。我将感激你的帮助!

1 个答案:

答案 0 :(得分:2)

这是否足够清楚?

byte f = (byte)0b00101000;
// Bits 0 to 7   --5-3---                  
byte s = (byte)0b11111111;
// Bits 8 to 15  54321098
byte[] bytes = new byte[]{f, s};
BitSet bs = BitSet.valueOf(bytes);

64是由于当前分配的位数。可以通过调用bs.length()获得设置位的最大位数。

没有任何东西可以指示任何构造函数或方法定义的尾随未设置位,但这不是必需的。这不会有害,因为您不会因为使用超出此值或BitSet的“end”的值的索引(例如在BitSet.get(int index)中)而受到惩罚。