Python判断奇偶的方法

1.%2取余判断
2.位运算
第一种:

def judge(num: int) -> bool:
    """True 代表是偶数 False代表是奇数"""
    if num % 2:
        return False
    else:
        return True

第二种:今天刷题碰到的,很有意思的位运算

def judge(num :int) -> bool:
	"""True 代表是偶数 False代表是奇数"""
    if num & 1:
        return False
    else:
        return True

这是啥意思呢?
1 & 0 = 0
1 & 1 = 1
0 & 0 = 0
0 & 1 = 0
这就很像and,左侧为假则返回左侧,否则返回右侧
举例:
15 & 1 == 1
在这里插入图片描述
16 & 1 == 0
在这里插入图片描述
所以,可以使用位运算来判断一个数是否为奇数。

拓展!::::::
跟大佬学习的一天,原题:LeeCode 191. 位1的个数
我写的:

class Solution:
    def hammingWeight(self, n: int) -> int:
        return bin(n).count("1")

大佬写的:

class Solution(object):
    def hammingWeight(self, n):
        res = 0
        while n:
            res += 1
            n &= n - 1
        return res

大佬原话:
有个更为神奇的做法,那就是 n & (n - 1) ,这个代码可以把 n 的二进制中,最后一个出现的 1 改写成 0。
下面的这个图,说明了 n & (n - 1) 这个操作的原理。我们发现只要每次执行这个操作,就会消除掉 n 的二进制中 最后一个出现的 1。
因此执行 n & (n - 1) 使得 n 变成 0 的操作次数,就是 n 的二进制中 1 的个数。
在这里插入图片描述

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值