1

バイナリ形式の数値を出力するメソッドがあります。

private static void binary(int n){
   for(int i = 1; i < Math.pow(2, n); i++)
      System.out.println(Integer.toBinaryString(i));
   }
} 

n = 3 の場合の出力は次のようになります。

1
10
11
100
101
110
111

次のように印刷する方法はありますか?

001
010
011
100
101
110
111
4

5 に答える 5

3
    private static void binary(int n){
       String t = ""; int N = 1<<n;
       for (int i=0; i<n;i++) t += "0";
       for (int i = 1; i < N; i++) {
             String s = Integer.toBinaryString(i);
             System.out.println(t.substring(s.length())+s);
       }
    } 
于 2013-01-10T13:23:48.157 に答える
2

試す:

String.format("%" + n + "s", Integer.toBinaryString(i)).replace(' ', '0')

これは最も効率的な解決策ではないかもしれませんが、単純で十分に短いものです。

于 2013-01-10T13:27:10.480 に答える
2

私はそれを次のように書きます

private static void binary(int n){
   for(long i = 0, max = 1 << n; i < max; i++) {
      String s = Long.toBinaryString(i);
      while (s.length() < n) s = '0' + s;
      System.out.println(s);
   }
} 

またはより効率的に

private static void binary(int n) {
    char[] chars = new char[n];
    for (long i = 0, max = 1 << n; i < max; i++) {
        for (int j = 0; j < n; j++)
            chars[j] = (char) (((i >>> (n - j - 1)) & 1) + '0');
        System.out.println(chars);
    }
}

binary(3);

版画

000
001
010
011
100
101
110
111
于 2013-01-10T13:23:35.727 に答える
2

クイック/ダーティ バージョン:

System.out.println(Integer.toBinaryString(i+(1<<n)).substring(1));

( n == 整数のビット数の場合、または整数に出力したいビット数よりも多くのビットがある場合の明らかな欠陥...非常に制限されていますが、入力がわかっている場合は少し簡単になるかもしれません)

于 2013-01-10T13:26:19.967 に答える
0
private static void binary(int n){
   for(int i = 1; i < Math.pow(2, n); i++)
      System.out.println(String.format("%04d", Integer.parseInt(Integer.toBinaryString(i))));
   }
} 

左側にゼロがある整数を埋めるにはどうすればよいですか?

于 2013-01-10T13:53:25.127 に答える