我需要从任何数字x到0总结2的幂。 如果x = 6,则期望的总和是2pow6 + 2pow5 + ..... 1。 虽然我总是可以编写一个使用Math.pow降低到0的算法 - 这个函数在循环中似乎是性能上的臭名昭着。 如果有人可以使用移位二元运算符帮助实现相同的目标,我将不胜感激 - 我听说它们比pow更有效率。
答案 0 :(得分:10)
2 ^ n + 2 ^(n-1)+ 2 ^(n-2)+ ... + 2 + 1 =(2 ^(n + 1) - 1)= ((1 << (n+1)) - 1)
答案 1 :(得分:6)
您不必在循环中计算它,您尝试计算的内容等同于
Math.pow(2, x+1) - 1
更好的是,你可以像torquestomp建议的那样计算它,这会更快:
(1 << (x + 1)) - 1