Java 如何获取由位集表示的位数?

Java 如何获取由位集表示的位数?,java,bitset,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 现在我更仔细地看了一下(前者得到了包括实现开销在内的大小,后者是最后一个设置位,所有设置都默认为false

如果我运行以下代码:

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
现在我更仔细地看了一下(前者得到了包括实现开销在内的大小,后者是最后一个设置位,所有设置都默认为false),这是有意义的,但这不是我想要的

因为我实际使用的比特集可以有不同的长度,所以我希望能够返回所表示的比特数(忽略它们是否被设置)。有没有办法做到这一点(希望有一个内置的方法)


我意识到我可以尝试翻转所有位,然后进行长度计算,或者跟踪用于实例化位集的变量,但我觉得这两种方法都需要几行注释来说明我的理由,我希望能有更多的自我记录。

一个位集将自动扩展到足以表示其中最高位集的大小;初始大小只是一个提示,表明您打算使用多少位。因此,您提出的问题毫无意义。

位集将自动扩展到足以表示其中最高位集的大小;初始大小只是一个提示,表明您打算使用多少位。因此,您提出的问题毫无意义。

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

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

我在Mac上做了一些测试,结果显示位集长度希望是64的倍数。因此,对于20的位集大小,它默认为64。如果您将大小设置为65,那么应该看到长度为128。将其设置为129会得到192。这将为您提供一种计算“真实”位集长度的方法。

我在Mac电脑上做了一些测试,结果显示位集长度应该是64的倍数。因此,对于20的位集大小,它默认为64。如果您将大小设置为65,那么应该看到长度为128。将其设置为129会得到192。这将为您提供一种计算“真实”位集长度的方法。

啊,我误解了它的工作原理。不知怎的,我错过了文档中关于按需增长的第一行。。。谢谢。啊,我误解了它的工作原理。不知怎的,我错过了文档中关于按需增长的第一行。。。谢谢