Я узнал алгоритм Fenwick Tree и был написан «i & (-i) равен самому правому биту».
Например, 3 & (-3) = 1, 48 & (-48) = 16.
.
Я проверил результат для i <= 64
, и все значения удовлетворяли условию.
Но я не знаю, почему условие удовлетворяет (доказательство) для всего положительного целого i.
Пожалуйста, скажите мне, как это доказать.Почему бит-операция i & (-i) равна самому правому биту?
EDIT: Вы можете предположить, что i - 32-разрядное целое (но 16-разрядное - это нормально). Если это так, диапазон значений i равен 1 <= i <= 2^31-1
.
Что такое 10^k? Я задаю вопрос о двоичных числах. – square1001
@ square1001 это строковое обозначение, поэтому a 1, за которым следует k 0 – harold