我有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()方法吗?我如何将该方法用于矩阵?
答案 0 :(得分:1)
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阵列中。