数学战争替代java

时间:2013-04-15 14:13:24

标签: java binary

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

2 个答案:

答案 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