回答編集履歴

1

BigIntegerの利用

2021/10/08 09:52

投稿

xebme
xebme

スコア1085

test CHANGED
@@ -35,3 +35,61 @@
35
35
 
36
36
 
37
37
  全パターンを作るには整数をインクリメントするのが一般的ですが、配列を使うということなので加算器をエミュレートしました。
38
+
39
+
40
+
41
+ ---
42
+
43
+ **整数のインクリメント**
44
+
45
+
46
+
47
+ 整数のインクリメントの例を追記しておきます。配列のサイズが31を超えることがあるでしょうから、汎用性を考慮して`java.math.BigInteger`を利用する例をあげます。意外と早いです。
48
+
49
+
50
+
51
+ ```Java
52
+
53
+ import java.math.BigInteger;
54
+
55
+ import java.util.Arrays;
56
+
57
+
58
+
59
+ public class BitPattern_ {
60
+
61
+
62
+
63
+ public static void main(String[] args) {
64
+
65
+ bitPattern(15);
66
+
67
+ }
68
+
69
+
70
+
71
+ static BigInteger TWO = BigInteger.ONE.add(BigInteger.ONE);
72
+
73
+
74
+
75
+ static void bitPattern(int size) {
76
+
77
+ int[] A = new int[size];
78
+
79
+ var MAX = TWO.pow(size);
80
+
81
+ for (var n = BigInteger.ZERO; n.compareTo(MAX) < 0; n = n.add(BigInteger.ONE)) {
82
+
83
+ for (int i = 0; i < size; ++i) A[i] = (n.testBit(i)) ? 1 : 0;
84
+
85
+ System.out.println(Arrays.toString(A));
86
+
87
+ }
88
+
89
+ }
90
+
91
+
92
+
93
+ }
94
+
95
+ ```