2017-01-31 8 views
0

나는 최근에이 코드 found on Wikipedia을 우연히 발견하고 무슨 일이 일어나고 있는지에 대한 일부 설명을 얻을 싶었 :해밍 거리 직관

int hamming_distance(unsigned x, unsigned y) 
{ 
int dist = 0; 
unsigned val = x^y; 

// Count the number of bits set 
while (val != 0) 
{ 
    // A bit is set, so increment the count and clear the bit 
    dist++; 
    val &= val - 1; 
} 

// Return the number of differing bits 
return dist; 
} 

입력 모두에 XOR 연산을 수행의 중요성은 무엇인가?

+1

XOR이이 알고리즘의 간단한 부분이라고 말하고 싶습니다. – harold

답변

2

이 함수는 기본적으로 입력 번호 사이에 비트가 서로 다른 숫자 을 반환합니다.

XOR은 비트들만이 다른 1로 설정한다 출력을 생성 두 숫자를 -ing 달성된다 (표 here 확인).

그 다음은 XOR에 의해 생성 된 출력의 비트 수를으로 계산하여 반환하는 것입니다. 입니다.

+0

이것은 완벽합니다. 고마워요 –

+0

harold가 맞다고 생각하지만, 비트를 세는 방식은 함수의 더 흥미로운 부분입니다. – Steeve

+0

그런 식으로 비트를 세는 중요성은 무엇입니까? –