В ruby, какой самый эффективный способ вычислить битовую разницу между двумя целыми числами без знака (например, расстояние Хэмминга)?
Например, у меня есть целое число a = 2323409845 и b = 1782647144.
Их двоичные представления:
a = 10001010011111000110101110110101
b = 01101010010000010000100101101000
Разница в битах между a & b равна 17 ..
Я могу сделать логическое XOR для них, но это даст мне другое целое число! = 17, тогда мне придется перебирать двоичное представление результата и подсчитывать число из 1.
Какой самый эффективный способ вычисления разницы в битах?
Теперь, изменится ли ответ для вычисления разницы в битах последовательностей многих целых? Например. даны 2 последовательности целых без знака:
x = {2323409845,641760420,509499086....}
y = {uint,uint,uint...}
Каков наиболее эффективный способ вычисления разницы в битах между двумя последовательностями?
Не могли бы вы выполнить итерацию последовательности или есть более быстрый способ рассчитать разницу по всей последовательности сразу?