gpt4 book ai didi

java - 用二进制数填充矩阵,常规和格雷编码

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:34:52 25 4
gpt4 key购买 nike

我有一个包含 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

最佳答案

只需更改即可得到格雷码

Integer.toBinaryString(r)

进入

Integer.toBinaryString((r >> 1) ^ r)

试一试:)

关于java - 用二进制数填充矩阵,常规和格雷编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17652524/

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