题目
原文:
Explain what the following code does: ((n & (n-1)) == 0).
译文:
解答以下代码的作用:((n & (n-1)) == 0)
解答
这个比较简单,代码的作用是判断一个数是否为2的整数次幂。题目中的判断代码不够严谨, 因为当n=0时,上述条件为真,但0并不是2的幂。所以,上述语句可以修改为:
1
(n > 0) && ((n & (n-1)) == 0)
更多关于位操作的介绍及技巧请看:
全书题解目录:
Cracking the coding interview–问题与解答
全书的C++代码托管在Github上:
https://github.com/Hawstein/cracking-the-coding-interview
声明:自由转载-非商用-非衍生-保持署名 | 创意共享3.0许可证,转载请注明作者及出处
出处:http://hawstein.com/2013/01/04/5.4/