拆分矩阵中的二进制值
Split Binary values in a matrix
我有一个 3x2 矩阵,我将其转换为二进制格式。每个二进制表示应该有 7 位。我使用String.format方法得到二进制矩阵。
0000111 1101000
0000101 1100101
0001100 1110010
现在我需要以将 3x2 矩阵转换为 3x14 的方式将每个二进制值拆分成位。
`int[][] p = {{7,104},{5,101},{12,114}};
int n;
String[][] P = new String[3][2];
for (int i =0; i<3;i++)
{
for(int j=0 ; j<2;j++)
{
P[i][j] =String.format("%7s", Integer.toBinaryString(p[i][j])).replace(' ', '0');
}
}`
如何将二进制字符串拆分为单独的位以获得 3x14 矩阵?
可以使用 String.split() 方法吗?我该如何着手将这种方法用于矩阵?
static int[][] p = {{7,104},{5,101},{12,114}};
static int bit( int[][] p, int row, int col ){
return (p[row][col/7] >> (7 - col%7 - 1)) & 1;
}
col/7 为范围 0-6 和 7-14 生成 0 和 1。 col%7 结果为值 0,1,...6。因此,移位移动 6,5,...0 次。
public static void main(String[] args)throws Exception {
for( int r = 0; r < 3; ++r ){
for( int c = 0; c < 14; ++c ){
System.out.print( " " + bit(p, r,c) );
}
System.out.println();
}
当然,您可以将其存储在 3x14 数组中。
我有一个 3x2 矩阵,我将其转换为二进制格式。每个二进制表示应该有 7 位。我使用String.format方法得到二进制矩阵。
0000111 1101000
0000101 1100101
0001100 1110010
现在我需要以将 3x2 矩阵转换为 3x14 的方式将每个二进制值拆分成位。
`int[][] p = {{7,104},{5,101},{12,114}};
int n;
String[][] P = new String[3][2];
for (int i =0; i<3;i++)
{
for(int j=0 ; j<2;j++)
{
P[i][j] =String.format("%7s", Integer.toBinaryString(p[i][j])).replace(' ', '0');
}
}`
如何将二进制字符串拆分为单独的位以获得 3x14 矩阵? 可以使用 String.split() 方法吗?我该如何着手将这种方法用于矩阵?
static int[][] p = {{7,104},{5,101},{12,114}};
static int bit( int[][] p, int row, int col ){
return (p[row][col/7] >> (7 - col%7 - 1)) & 1;
}
col/7 为范围 0-6 和 7-14 生成 0 和 1。 col%7 结果为值 0,1,...6。因此,移位移动 6,5,...0 次。
public static void main(String[] args)throws Exception {
for( int r = 0; r < 3; ++r ){
for( int c = 0; c < 14; ++c ){
System.out.print( " " + bit(p, r,c) );
}
System.out.println();
}
当然,您可以将其存储在 3x14 数组中。