0

我正在尝试从结果数组的位中替换 rgb 的最低有效位

for (int k = 0; k < rgb.length ; ++k)
{       
    for (int n=0; n<rgb[k].length; n++) 
    {               
        rgb[k][n] = (rgb[k][n] >> 1) << 1;  
        rgb[k][n] = rgb[k][n] | result[n];       
    }
}

rgb 是二维数组,结果是一维数组,rgb 的值类似于 10010110
11000110
10101010 ,其中结果数组的值为 0
1
1 ...

但我没有得到适当的输出..

4

1 回答 1

3

所以你正在尝试做

int[][] rgb = {{1, 2}, {3, 4}};
int[] result = {0, 1};

for (int[] arr : rgb)
    for (int n = 0; n < arr.length; n++)
        arr[n] = result[n] == 0 ?
                 (arr[n] & ~1) /* clear */ : 
                 (arr[n] | 1) /* set */;


for (int[] arr : rgb) {
    String sep = "";
    for(int i : arr) {
        System.out.print(sep + Integer.toBinaryString(i));    
        sep = ", ";
    }
    System.out.println();
}

印刷

0, 11
10, 101
于 2013-01-03T16:44:23.620 回答