如何获取BitSet表示的位数?

时间:2011-12-03 22:33:35

标签: java bitset

如果我运行以下代码:

BitSet test = new BitSet(20);
System.out.println("Bitset size is " + test.size());
System.out.println("Bitset length is " + test.length());

我得到了输出:

Bitset size is 64
Bitset length is 0

现在我更接近documentation(前者获得包括实现开销的大小,后者是最后一个设置位,所有默认为false),这是有道理的,但不是我想要的。

由于我实际使用的BitSet可以有不同的长度,我希望能够找回所代表的位数(忽略它们是否已设置)。有没有办法做到这一点(希望使用内置方法)?

我意识到我可以尝试翻转所有位然后做长度,或者通过跟踪我用来实例化BitSet的变量,但我觉得两者都需要几行评论和我的理由而且我希望能找到一些东西更多的自我记录。

3 个答案:

答案 0 :(得分:2)

BitSet将自动扩展到足以表示其中设置的最高位的大小;初始大小只是一个关于你打算使用多少位的提示。所以你提出的问题毫无意义。

答案 1 :(得分:1)

我在我的Mac上进行了一些测试,看起来BitSet长度想要是64的倍数。所以,对于你的BitSet大小为20,它默认为64.如果你将你的大小设置为65,那么你应该看到128的长度。设置为129应该给你192.这应该给你一种方法来计算'真''BitSet长度。

答案 2 :(得分:0)

Bitset内部使用long(64位)。因此,您可以使用size()方法确定所需的位数。