题目
原文:
Explain what the following code does: ((n & (n-1)) == 0).
译文:
解答以下代码的作用:((n & (n-1)) == 0)
解答
这个比较简单,代码的作用是判断一个数是否为2的整数次幂。题目中的判断代码不够严谨, 因为当n=0时,上述条件为真,但0并不是2的幂。所以,上述语句可以修改为:
(n > 0) && ((n & (n-1)) == 0)
更多关于位操作的介绍及技巧请看:
全书题解目录:
Cracking the coding interview–问题与解答
全书的C++代码托管在Github上: