带有尾随零的Java BitSet

对于以0结尾的位表示,我该如何使用BitSet?

例如,为了在BitSet中表示“ 10100”,我正在执行以下操作.

BitSet bits = new BitSet(5);
bits.set(0);
bits.set(2);

基于Java文档,

length() – Returns the “logical size” of this BitSet: the index of the highest set bit in the BitSet plus one.

size() – Returns the number of bits of space actually in use by this BitSet to represent bit values.

因此,对于给定的示例,由于BitSet在内部与long配合使用,因此length()返回“ 3”,size()返回“ 64”.

使用给定的BitSet,如何确定其中的实际位(在这种情况下为10100)?

附注:我正在研究压缩技术,并且我不想使用boolean []来表示它,因为数组中的每个条目都可以占用1个字节.

谢谢!

解决方法:

在BitSet中,零索引是最低有效位.您的示例应为:

BitSet bits = new BitSet(5);
bits.set(2);
bits.set(4);

现在bits.length()返回5,如预期的那样.

上一篇:ACM-ZOJ2729-Sum Up


下一篇:BitMap Java实现【转】