비트 1의 수가 홀수인지 짝수인지 알고 싶습니다. 여기 코드입니다 :패리티가 짝수 또는 홀수의 1의 비트를 찾기 위해 어떻게 작동합니까?
int odd_ones(unsigned x)
{
x ^= x >> 16;
x ^= x >> 8;
x ^= x >> 4;
x ^= x >> 2;
x ^= x >> 1;
return !(x&1);
}
그러나 그것이 어떻게 작동하는지 모르겠어요; 나는 오랫동안이 일에 매달 렸습니다.
당신이 무엇을'>>','및 이해 하는가' '^'는 무엇입니까? 그렇지 않다면, 당신이 그것을 얻지 못하는 이유입니다. 그렇다면, 어디에 갇혀 있는지 말해주십시오. – Maroun
>> 오른쪽 셔츠 용 스탠드 & ^ XOR 용 스탠드. 나는 아래에있는 모든 비트를 적어 둡니다, 그것은 진정한 답을 주지만 어떻게 줄 수 있는지 모르겠습니다. ??? –
'odd_ones()'는 내가 기대하는 반대 값인'odd_ones (0)'-> 1과'odd_ones (1)'-> 0을 반환합니다.이 함수의 이름을'is_even_parity()'. – chux