2
私はビット操作を初めてやっていて、次のことをしたいと思っています:
赤のシアンや白が黒になるような私のプログラムには逆の色のargbコードが必要です。 Photoshopを試してみたら、255 - 赤、255 - 緑、255 - 青を計算する必要があることが分かりました。だから、これは次のようになります。ビット操作:アルファを無視した逆argb
int getInversed(int argb) {
Color old = new Color(argb);
Color negative = new Color(255 - old.getRed(), 255 - old.getGreen(), 255 - old.getBlue(), old.getAlpha());
return negative.getRGB();
}
は今、私はあなたが8ビットbytes
として赤、緑、青の値を取る場合、あなたは、単に同じを得るために~
オペレータとそれらを逆できることを推測しました結果。
しかし、私はそれだろうまた、逆アルファいるので、全体のARGBコードを反転することができないと私はアルファが手つかずたい:
public int getInversed(int argb) {
return ~argb; //inverses alpha as well
}
は、どのように私は、アルファ部分を無視して、ビット演算とARGBのコードを逆できますか?
最も簡単な方法は、ちょうどあなたが反転するために必要な部品をマスキングさ: 'マスク= 0xFFFFFFの。 argb =(〜argb&mask)| (argb&〜mask); ' –