如何用 0 填充 BitSet?
How to populate a BitSet with 0s?
我正在尝试用全 0 填充大小为 32 的 BitSet。
当我做 longWord.set(i);它填充了所有 i 值。
当我做 longWord.set(i,false);它根本没有填充。
如何将所有 32 位设置为 0?
longWord = new BitSet(32);
for(int i = 0; i < 32; i++)
{
longWord.set(i);
}
System.out.println(longWord);
默认情况下,BitSet 的值初始化为 false,因此只需:
longWord = new BitSet(32);
应该给你想要的。
我不太清楚你的意思
When I do longWord.set(i,false); it doesn't populate at all.
查看 JavaDoc 我可以看到您应该得到一个所有值都设置为 false 的 longWord。如果不是这样,你能 post 打印什么 System.out.println(longWord);
吗?
编辑:
看一下,如果所有值都设置为 0,toString() 方法似乎会导致 {}。值设置为 false,只是不打印。
正在做
for(int i = 0; i < 32; i++) {
System.out.println(longWord.get(i));
}
会使这一点显而易见。在将它们全部设置为 true 后打印它们时,您将获得设置为 true 的位的索引(在您的情况下是所有位)。要看到这一点,只需执行以下操作:
BitSet longWord = new BitSet(32);
longWord.set(26);
System.out.println(longWord);
您将在印刷品中看到 26。
鉴于 Bitset
提供的模型,您尝试做的事情没有意义。
从概念上讲,Bitset
表示 无限 位集。虽然 Bitset
有一个 length()
方法,但它 returns 是这样的:
the index of the highest set bit in the BitSet
plus one. Returns zero if the BitSet
contains no set bits.
这被描述为“逻辑大小”。
但是您想表示一个概念性的“位数组”,其中未设置(即零)位是位集“大小”的一部分。
有几种方法可以解决这个问题:
- 将您的概念长度与
Bitset
对象分开;例如使用 int
变量。
- 为
Bitset
编写一个简单的包装器 class,它的行为符合您的要求;即实现显式 length
字段的一个。
- 寻找一个替代位集 class,其行为方式符合您的要求。
我正在尝试用全 0 填充大小为 32 的 BitSet。
当我做 longWord.set(i);它填充了所有 i 值。
当我做 longWord.set(i,false);它根本没有填充。
如何将所有 32 位设置为 0?
longWord = new BitSet(32);
for(int i = 0; i < 32; i++)
{
longWord.set(i);
}
System.out.println(longWord);
默认情况下,BitSet 的值初始化为 false,因此只需:
longWord = new BitSet(32);
应该给你想要的。
我不太清楚你的意思
When I do longWord.set(i,false); it doesn't populate at all.
查看 JavaDoc 我可以看到您应该得到一个所有值都设置为 false 的 longWord。如果不是这样,你能 post 打印什么 System.out.println(longWord);
吗?
编辑:
看一下,如果所有值都设置为 0,toString() 方法似乎会导致 {}。值设置为 false,只是不打印。 正在做
for(int i = 0; i < 32; i++) {
System.out.println(longWord.get(i));
}
会使这一点显而易见。在将它们全部设置为 true 后打印它们时,您将获得设置为 true 的位的索引(在您的情况下是所有位)。要看到这一点,只需执行以下操作:
BitSet longWord = new BitSet(32);
longWord.set(26);
System.out.println(longWord);
您将在印刷品中看到 26。
鉴于 Bitset
提供的模型,您尝试做的事情没有意义。
从概念上讲,Bitset
表示 无限 位集。虽然 Bitset
有一个 length()
方法,但它 returns 是这样的:
the index of the highest set bit in the
BitSet
plus one. Returns zero if theBitSet
contains no set bits.
这被描述为“逻辑大小”。
但是您想表示一个概念性的“位数组”,其中未设置(即零)位是位集“大小”的一部分。
有几种方法可以解决这个问题:
- 将您的概念长度与
Bitset
对象分开;例如使用int
变量。 - 为
Bitset
编写一个简单的包装器 class,它的行为符合您的要求;即实现显式length
字段的一个。 - 寻找一个替代位集 class,其行为方式符合您的要求。