题目来源:LeetCode: 231. Power of Two
Given an integer, write a function to determine if it is a power of two.
思路
- 按位操作为出发点
- 所有2的幂数共性为:二进制中某一位为1,其他位均为0
- 逐位右移,当遇到首个非0的位时,判断是否仅存在唯一的1
源码
1 | //231. Power of Two |
运行结果:
1108 / 1108 test cases passed.
Status: Accepted
Runtime: 4 ms
Submitted: 0 minutes agoYou are here! Your runtime beats 47.39% of csubmissions.
总结
- 注意特殊情况的处理,即n=0的情况。
- 判断一个数奇偶性时,可以用%2的形式,也可以用&1的方式。
- 注意运算符的优先级
==和!=的优先级高于地址操作符(&, ^, |)
- C99标准后的C语言支持bool布尔类型,需引入头文件stdbool.h
C语言不同标准的差异,参见ANSI C与C89、C99、C11区别差异