2

我需要将任何数字 x 到 0 的 2 的幂相加。如果 x=6,则所需的总和为 2pow6+2pow5+.....1。虽然我总是可以使用 Math.pow 编写一个算法来减少到 0 - 这个函数在循环中的性能方面似乎是臭名昭著的。如果有人可以帮助使用移位二元运算符实现相同的目标,我将不胜感激 - 我听说它们比 pow 更有效。

4

2 回答 2

11

2^n + 2^(n-1) + 2^(n-2) + ... + 2 + 1 = (2^(n+1) - 1) =((1 << (n+1)) - 1)

于 2013-04-15T14:15:30.800 回答
6

您不必在循环中计算它,您尝试计算的内容相当于

Math.pow(2, x+1) - 1

更好的是,您可以像 Torquestomp 建议的那样计算它,这样会更快:

(1 << (x + 1)) - 1
于 2013-04-15T14:15:01.577 回答