2017-01-31 4 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

Функция в основном возвращает число различных разрядов между номерами ввода.

Это достигается с помощью исключающего -ный два числа, которые будут генерировать выходной сигнал, где только те биты будут установлены в 1, которые отличаются (проверьте таблицу here).

С этого момента это всего лишь с подсчетом бит на выходе, производимый XOR и возвращающий их.

+0

Это имеет смысл! Спасибо, кучка –

+0

Хотя я думаю, что харрод прав, способ подсчета бит - более интересная часть функции. – Steeve

+0

Итак, каково значение подсчета бит таким образом? –

Смежные вопросы