二元AND算子的解释

时间:2013-01-18 01:44:39

标签: python bitwise-operators

有人可以解释按位,二进制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但是无法掌握它。

2 个答案:

答案 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被证明是平等的,从此不是素数。