我正在使用Java(JDK 1.8)开发并操作BitSets。我来了 一个奇怪的问题。
我实例化一个大小为160的BitSet,如:
<ListView x:Name="ListV" >
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding City}"/>
<TextBlock Text="{Binding Area}"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我想使用size()方法检查大小,该方法给出bitset中的位数。在文档中,据说具有int N作为参数的构造函数正在创建N位的位集。
但是当我在之后用
检查尺寸时BitSet example = new BitSet(160);
我获得了值
example.size()
我不明白为什么,有没有人遇到过这种问题? 链接到文档:http://docs.oracle.com/javase/7/docs/api/java/util/BitSet.html
答案 0 :(得分:5)
这是因为BitSet
构造函数创建了一个BitSet
“,其初始大小足以明确表示参数给定范围内的位。因此,实际size
至少您在参数中提供的数字,但不必然等于该数字。
它特别使用192的原因是192是一个相当不错的二进制数:64 * 3.
答案 1 :(得分:0)
因为BitSet实际上是使用long []来存储0/1。
private void initWords(int nbits) {
words = new long[wordIndex(nbits-1) + 1];
}