Самый эффективный способ вычисления расстояния Хэмминга в рубине?

Каков наиболее эффективный способ вычисления разницы в битах между двумя целыми числами без знака (например, расстояние Хэмминга) в рубине?

Например, , У меня целое число a = 2323409845 и b = 1782647144.

Их двоичные представления:

a = 10001010011111000110101110110101
b = 01101010010000010000100101101000

Разница в битах между a и b равна 17 ..

Я могу выполнить с ними логическую операцию XOR, но это будет дайте мне другое целое число! = 17, тогда мне пришлось бы перебирать двоичное представление результата и подсчитывать количество единиц.

Каков наиболее эффективный способ вычисления разницы в битах?

изменение ответа для вычисления разности битов последовательностей многих целых чисел? Например. даны 2 последовательности беззнаковых целых чисел:

x = {2323409845,641760420,509499086....}
y = {uint,uint,uint...}

Каков наиболее эффективный способ вычисления разницы в битах между двумя последовательностями?

Вы бы перебирали последовательность, или есть более быстрый способ вычислить разницу во всей последовательности сразу?

12
задан ch3rryc0ke 18 June 2011 в 09:45
поделиться