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 は 2 次元配列で、結果は 1 次元配列です。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 に答える