我有一个包含 1:s 或 0:s 的矩阵,创建二进制数。它的宽度是 n。对于 n = 2 和 n = 3,它看起来像:
00 000
01 001
10 010
11 011
100
101
110
111
等等。现在我正在使用以下代码来生成它。
int row = (int) Math.pow(2, n);
int col = n;
int[][] matrix = new int[row][col];
for (int r = 0; r < row; r++) {
String binaryNumber = String.format("%" + n + "s", Integer.toBinaryString(r)).replace(' ', '0');
for (int c = col - 1; c >= 0; c--) {
matrix[r][c] = Integer.parseInt("" + binaryNumber.charAt(0));
binaryNumber = binaryNumber.substring(1);
}
}
现在我需要帮助来创建相同但灰色编码的东西。在java中有没有方便的方法来做到这一点?另外,如果有一种更聪明的方法来做我上面所做的事情,我很乐意学习。
我真的不知道从哪里开始,因为我已经习惯了toBinaryString()
帮助我。编辑:格雷码将如下所示:
00 000
01 001
11 011
10 010
110
111
101
100