2017-10-28 1 views
2

저는 비트 연산을 처음 사용하고 다음과 같이하고 싶습니다.
내 프로그램의 argb 코드가 필요합니다. 빨간색은 시안 색이되거나 검은 색이됩니다. . 포토샵으로 실험 했으므로 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 코드, 알파 부분을 무시를 반전 할 수있는 방법?

+0

간단한 방법은 당신이 반전하는 데 필요한 부분을 마스킹된다'마스크 = 0xFFFFFF가; argb = (~ argb & mask) | (argb & ~ 마스크); –

답변

5

당신은 xor mask으로 작업을 수행 할 수 있습니다

따라서 비트의 값의 반전은 영향을주지 않습니다 즉, XOR 마스크 비트 - 안전주의에는 1
로를 XOR 연산에 의해 이루어집니다 마스크되지 않은 비트

return argb^0x00FFFFFF;