问题描述
检测一个整数n是否为2的幂次
问题示例
Input: 4
Output: True
Input: 5
Output: False
算法思想
利用位运算符<<
, 运算数的各二进位全部左移若干位,由<<
右边的数字指定移动的位数,高位丢弃,低位补0。
tips
print(3<<1) # 6
# 3的二进制为0011,左移一位后为0110,即为6
代码实现
# -*- coding:utf-8 -*-
# @Time :2022/7/17 13:25
# @AUTHOR :booozai
# @SOFTWARE :PycharmProjects
class Solution:
def checkPowerOf2(self, n):
ans = 1
for i in range(31):
if ans == n:
return True
ans = ans << 1
return False
if __name__ == '__main__':
soution = Solution()
num = 16
print("Input: ", num)
print("Output ", soution.checkPowerOf2(num))
运行结果
Input: 16
Output True