Я пишу быстро программу, чтобы разложить ряд по степеням 2. Является ли это эффективный способ сделать это:Сбор разложение 2-мощности п (Python, C++)
pows=[]
pos = 0
while n>0:
if n%2==1: pows.append(2**pos)
n/=2
pos+=1
Я написал это в Python, но меня также интересует, как это делается на C++.
Я не знаю, является ли это «умным» способом сделать это, или если это считается ужасно неэффективным.
Поиск StackOverflow для "[C++] convert binary". –
Вы можете сделать его более эффективным, аккумулируя фактическую мощность 2 вместо экспоненты. Таким образом, вы избегаете вычисления 2 ** поз. (т. е. начать с 'power = 1', а затем в каждом цикле:' power + = power' (или 'power * = 2'). Кроме того, в python3' n/= 2' не является целым делением, если вам интересно о python3. – rici
Быстрее ли использовать «битмаски»? – user111373