Это так же, как 99999 10 равно 100000 10 - 1, 11111 2 равно 100000 2 - 1.
Есть два способа взглянуть на эту проблему.Один из произвольных n , работающих в обратном направлении, которые уже описаны в вашем описании.Еще один способ, который я нашел полезным, - начать с нуля и работать до n :
- T (0) = 1
- T (1) =1 << 1 + 1 = 3 </li>
- T (2) = 3 << 1 + 1 = 7 </li>
- ...
Здесь << - этоОператор «сдвига влево» для двоичных чисел, который эквивалентен умножению на 2. Этот оператор довольно распространен во многих языках программирования.Это помогает показать, что вы просто добавляете 1 бит на каждом этапе пути.Возвращаясь к первому утверждению, <em>n последовательные биты равны 2 n + 1 - 1.
В объяснении в вашем вопросе просто используется i в качестве счетчика, который работает от 1 до n .Это не часть уравнения, за исключением счетчика шагов.На последнем шаге i = n , следовательно, конверсия, в которой вы можете быть запутаны.