有人可以解释按位,二进制AND运算符(&)的用途以及如何使用它吗?我正在研究制作isprime
函数的不同方法,并且遇到了这个问题。
def isprime(n):
# make sure n is a positive integer
n = abs(int(n))
# 0 and 1 are not primes
if n < 2:
return False
# 2 is the only even prime number
if n == 2:
return True
# all other even numbers are not primes
if not n & 1:
return False
# range starts with 3 and only needs to go up the squareroot of n
# for all odd numbers (counts by 2's)
for x in range(3, int(n**0.5)+1, 2):
if n % x == 0:
return False
return True
我也看了Python Bitwise Operators Example但是无法掌握它。
答案 0 :(得分:3)
一个数字和另一个数字是由另一个数字的位掩盖的一个数字的位。如果数字AND 1为0(not n & 1
将为True
),则表示它可被2整除,因为所有2的倍数都有0作为最右边的二进制数字。
11 = 00001011 (Not divisible by 2) 28 = 00011100 (Divisible by 2)
& 1 = 00000001 & 1 = 00000001
--------------- ---------------
00000001 00000000
答案 1 :(得分:0)
例如,
12&amp; 7 = 1100&amp; 0111 = 0100 = 4
对于isPrime函数,第一个条件检查它是0还是1.第二个条件检查它是否为2.第三个条件然后检查是否(n&amp; 1),这是检查数字是否是偶数。转换为二进制形式时,每个偶数都在其最后一位数字中为0。例如,
14&amp; 1 = 1110&amp; 0001 = 0
14被证明是平等的,从此不是素数。