2010-04-02 4 views
9

비트 단위로 반전하는 방법 C에서? AND (&)?C에서 비트 AND (&)를 반전하는 방법?

는 예를 들어 I는 다음과 같이 C의 동작을 가지고

((unsigned int)ptr & 0xff000000)) 

결과는 0xbf000000이다. 이 순간에 내가 필요로하는 것은 위의 내용을 역전시키는 것입니다. 즉, 작업 결과와 0xff000000을 사용하여 ptr을 결정하는 것입니다.

C에서 이것을 구현하는 간단한 방법이 있습니까?

답변

22

비트 단위 &은 되돌릴 수 없습니다 :

0 & 1 = 0 
0 & 0 = 0 
3

불가능합니다. 0x32000000의 비트 단위 &은 손실 ​​연산입니다. 하위 24 비트는 영구적으로 손실됩니다.

15

당신은 (즉, 비트)의 정보를 멀리 던져 때문에 그렇게 할 수 없다 - 다시 어디에서 정보를 얻을 수 없습니다. 두 AND (&) 및 OR (|)는 파괴적

참고. 되돌릴 수있는 유일한 부울 연산은 XOR (^)이고 NOT (~)입니다.

1

비파괴적인 XOR 만 되돌릴 수 있습니다.

OR과 AND는 모두 파괴적입니다.

+5

"아닙니다"를 뒤집을 수도 있습니다. –

+0

네, 제가 그 실수를 풀어 놓았습니다 .--) – Steffen