Cracking the coding interview--Q5.4

Hawstein | January 4, 2013

题目

原文:

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)

更多关于位操作的介绍及技巧请看:

C/C++位操作

全书题解目录:

Cracking the coding interview–问题与解答

全书的C++代码托管在Github上:

https://github.com/Hawstein/cracking-the-coding-interview

声明:自由转载-非商用-非衍生-保持署名 | 创意共享3.0许可证,转载请注明作者及出处
出处:http://hawstein.com/2013/01/04/5.4/