我正在读一篇论文,问题是:“你怎么能快速计算2 ^ X”? 纸上的建议答案:“1<< X< X”
当然,这似乎不是正确的答案,因为我尝试过像
这样的事情 2 ^ 9 = 11
1 << 9 = 512
想知道 - 有谁能想到我在这里缺少什么逻辑或作者在这里真的错了?
答案 0 :(得分:11)
我认为你误解了2 ^ x意味着“两个XOR与x”,而意图可能是2 x 。在这种情况下,1 << x
是计算2 x 的好方法。不幸的是,在输入纯文本时,^通常用于表示取幂,但在C,C ++和Java的上下文中,^表示XOR运算符。 (它也是新C / C ++ / Java程序员的一个简单陷阱!)
希望这有帮助!
答案 1 :(得分:2)
2 9 是512。
所以1&lt;&lt; 9做的是正确的。