gpt4 book ai didi

java - 生成从 1 到 2^k-1 的数字的二进制表示

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:26:14 24 4
gpt4 key购买 nike

我想获得范围为 1...2^k-1 的二进制表示的整数列表。或者,我需要一个包含 k 位所有可能组合的列表。因此,例如,假设 k 为 3,我需要:

001
010
011
100
101
110
111

当我计划在 Java 中执行此操作时,我正在考虑使用 BitSet 来表示每个数字,并将值存储在列表中,但我认为这个问题可能与语言无关。基本上,我需要找出生成整个集合的算法。

我认为我需要一个递归解决方案,它会考虑到先前设置的位。

void fill(int k, int i, boolean wasSet) {
if (i==k) return;
BitSet bs = new BitSet();
for (int j=0; j<k; j++) {
if (!wasSet) {
bs.set(i);
fill(k, i, true);
} else {
fill(k, j, false);
}
}

注意:这个函数原型(prototype)显然是错误的。

注意 2:我真的很想避免使用字符串,因为我以后需要使用这个值来执行一些其他计算,而 BitSet 对此非常方便

最佳答案

你可以有如下内容:

for(int i=0 ; i<n ; i++){
System.out.println(Integer.toBinaryString(i));
}

其中 n 是您想要的最大数字。

更新

使用 BitSet java 7 有一个 BitSet.valueOf(byte[])BitSet.toByteArray()

有关更多详细信息,请查看 this post .

关于java - 生成从 1 到 2^k-1 的数字的二进制表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20035547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com