JAVA BitSet 设置
JAVA BitSet setting
我正在 Java (JDK 1.8) 中开发并操作 BitSet。我偶然发现
一个奇怪的问题。
我正在实例化一个大小为 160 的 BitSet,例如:
BitSet example = new BitSet(160);
我想使用给出位集中位数的 size() 方法检查大小。在文档中说,以 int N 作为参数的构造函数正在创建一个 N 位的位集。
但是当我在 和
之后检查尺寸时
example.size()
我获取值
192
我不明白为什么,有人遇到过这种问题吗?
link 到文档:http://docs.oracle.com/javase/7/docs/api/java/util/BitSet.html
这是因为BitSet
构造函数在参数给定的范围内创建了BitSet
"whose initial size is large enough to explicitly represent"位。所以实际的 size
将 至少 您在参数中给出的数字,但 不一定 等于该数字。
它特别使用 192 的原因是 192 是一个相当不错的二进制数:64 * 3。
因为BitSet其实是用long[]来存储0/1的。
private void initWords(int nbits) {
words = new long[wordIndex(nbits-1) + 1];
}
我正在 Java (JDK 1.8) 中开发并操作 BitSet。我偶然发现 一个奇怪的问题。
我正在实例化一个大小为 160 的 BitSet,例如:
BitSet example = new BitSet(160);
我想使用给出位集中位数的 size() 方法检查大小。在文档中说,以 int N 作为参数的构造函数正在创建一个 N 位的位集。
但是当我在 和
之后检查尺寸时example.size()
我获取值
192
我不明白为什么,有人遇到过这种问题吗? link 到文档:http://docs.oracle.com/javase/7/docs/api/java/util/BitSet.html
这是因为BitSet
构造函数在参数给定的范围内创建了BitSet
"whose initial size is large enough to explicitly represent"位。所以实际的 size
将 至少 您在参数中给出的数字,但 不一定 等于该数字。
它特别使用 192 的原因是 192 是一个相当不错的二进制数:64 * 3。
因为BitSet其实是用long[]来存储0/1的。
private void initWords(int nbits) {
words = new long[wordIndex(nbits-1) + 1];
}