我正在使用Java (JDK1.8)进行开发,并操作BitSets。我遇到了一个奇怪的问题。
我正在实例化一个大小为160的BitSet,类似于:
BitSet example = new BitSet(160);我希望使用size()方法检查大小,该方法给出位集中的位数。在文档中,使用int作为参数的构造函数正在创建N位的位集。
但是,当我检查的大小时,就在之后
example.size()我得到了价值
192我不明白为什么,有没有人遇到这样的问题?指向文档的链接:http://docs.oracle.com/javase/7/docs/api/java/util/BitSet.html
发布于 2015-07-04 18:53:45
这是因为BitSet构造函数在参数给定的范围内创建了一个“初始大小足以显式表示”位的BitSet。因此,实际的size至少是你在参数中给出的数字,但不一定等于这个数字。
特别是它使用192的原因是192是一个相当不错的二进制数: 64 * 3。
发布于 2016-01-18 07:15:08
因为BitSet实际上是使用long[]存储0/1的。
private void initWords(int nbits) {
words = new long[wordIndex(nbits-1) + 1];
}https://stackoverflow.com/questions/31224124
复制相似问题