Python 给定一个整数,编写一个函数来判断它是否是 2 的幂次方。

本文介绍了一种使用位运算判断一个整数是否为2的幂次方的方法。通过分析2的幂次方数与其减一后的二进制表示,利用位与运算的特性,可以高效地完成判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给定一个整数,编写一个函数来判断它是否是 2 的幂次方。

输入: 1
输出: true
解释: 20 = 1

这里我们采用 位运算

在python中 ,如果a,b是数值变量, 则&, |表示位运算
‘&’ 表示 ‘与’ 运算 (按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0)
'|' 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。

而2的幂次方,比如8,二进制表示为 1000 ,那么 8-1=7 的二进制是 0111
我们这就是采用这个来(二进制)判断 8 & 7 = 0, 2 & 1 = 0, 16 & 15 = 0

所以我们的代码就是:

class Solution:
    def isPowerOfTwo(self, n):
        """
        :type n: int
        :rtype: bool
        """
        # 判断 n是否大于0,以及n和n-1进行与运算,是为为0
        return n > 0 and (n & n-1) == 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值