轻松计算和列出二进制组合

时间:2011-03-29 12:58:13

标签: php algorithm binary combinations

我有5位,因此有32种不同的组合(其中)。

开始
00000

结尾
11111

有没有办法快速列出所有可能性?我可以手工完成,但我担心我可能会错过一个。我猜一些聪明的家伙写了一些算法和/或建立了一个网站,这可以很容易地做到这一点。至少我希望如此。

非常感谢。

6 个答案:

答案 0 :(得分:5)

这将把它们全部放在Linux上的命令行中。

echo {0..1}{0..1}{0..1}{0..1}{0..1}

答案 1 :(得分:3)

在Ruby中:

0b0000.upto(0b1111) {|n| puts n.to_s(2).rjust(4,"0")}
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

答案 2 :(得分:2)

写一个0到31之间整数的列,然后写一个第二列,其中每个整数的二进制等价并排。

这样你就增加了不错过组合的机会。

答案 3 :(得分:2)

从0到31计数,并以二进制形式输出数字。

这样的事情应该做:

public static String zeroPad(String str) {
    return "00000".substring(str.length()) + str;
}

public static void main(String[] args) {
    for (int i = 0; i < 32; i++)
        System.out.printf("%s%n", zeroPad(Integer.toBinaryString(i)));
}

输出:

00000
00001
00010
00011
...
11110
11111

答案 4 :(得分:1)

for(int i = 0; i&lt; 31; i ++)   cout&lt;&lt; ((i&amp; 16)&gt;&gt;&gt;&lt;&lt;&lt;&lt; ((i&amp; 8)&gt;&gt;&gt;&gt;&lt;&lt;&lt;&lt; ((i&amp; 4)&gt;&gt; 2)        &LT;&LT; ((i&amp; 2)&gt;&gt;&gt;&gt;&lt;&lt;&lt; (i&amp; 1)&lt;&lt; ENDL;

答案 5 :(得分:0)

Unix的:

echo {0..1}{0..1}{0..1}{0..1} | xargs -n 1