首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAVA BitSet设置

JAVA BitSet设置
EN

Stack Overflow用户
提问于 2015-07-04 18:51:22
回答 2查看 257关注 0票数 1

我正在使用Java (JDK1.8)进行开发,并操作BitSets。我遇到了一个奇怪的问题。

我正在实例化一个大小为160的BitSet,类似于:

代码语言:javascript
复制
BitSet example = new BitSet(160);

我希望使用size()方法检查大小,该方法给出位集中的位数。在文档中,使用int作为参数的构造函数正在创建N位的位集。

但是,当我检查的大小时,就在之后

代码语言:javascript
复制
example.size()

我得到了价值

代码语言:javascript
复制
192

我不明白为什么,有没有人遇到这样的问题?指向文档的链接:http://docs.oracle.com/javase/7/docs/api/java/util/BitSet.html

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-04 18:53:45

这是因为BitSet构造函数在参数给定的范围内创建了一个“初始大小足以显式表示”位的BitSet。因此,实际的size至少是你在参数中给出的数字,但不一定等于这个数字。

特别是它使用192的原因是192是一个相当不错的二进制数: 64 * 3。

票数 5
EN

Stack Overflow用户

发布于 2016-01-18 07:15:08

因为BitSet实际上是使用long[]存储0/1的。

代码语言:javascript
复制
private void initWords(int nbits) {
    words = new long[wordIndex(nbits-1) + 1];
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31224124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档