有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何获得由位集表示的位数?

如果我运行以下代码:

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),这是有意义的,但这不是我想要的

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

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


共 (3) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

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

  3. # 3 楼答案

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