&是位运算符
and 是逻辑运算符
a and b ,a,b都大于0,就为真。
5 & 3 等于101 & 011 = 001 即2
案例
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
# -*- coding:utf-8 -*-
class Solution:
def NumberOf1(self, n):
# write code here
return sum([(n>>i & 1) for i in range(32)][::-1])
代码的意思还是整数求二进制的思路:整数除以2求余数,然后倒过来就是二进制了。
n >> i 表示n 右移 i 位 ,右移一位相当于除以2
例如 n=10
n>>0 等于10 ,10 &1 等于1010 & 0001 等于0
n>>1 等于5, 5 & 1 等于0101 & 0001 等于1
n>>i 的结果为奇数时,结果就为1。
也就是整数求二进制时的余数,所有的余数倒过来就是整数的二进制了
本文深入探讨了位运算符&和逻辑运算符and的区别,通过具体案例解释了它们在Python中的使用方法。并提供了一段代码示例,用于计算整数的二进制表示中1的个数,展示了位运算符在实际编程中的应用。
1851

被折叠的 条评论
为什么被折叠?



