拆分矩阵中的二进制值

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 数组中。