使用价值>> i << i!= value:

Alg*_*bra 0 python

我遇到过这样一个功能:

import math
import random

def low_zeros(value):
    for i in xrange(1, 32):
        if value >> i << i != value:
            break
    return i - 1
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索,但没有找到任何有用的材料 value >> i << i != value:

Ada*_*ith 5

它正在检查有多少右侧位设置为零.

>>向右移位,然后<<向左移位相同数量的位移.考虑:

0b1000 >> 3 << 3
Run Code Online (Sandbox Code Playgroud)

第一班将会做0b1000 -> 0b0001.第二个会做0b0001 -> 0b1000.这仍然与原版相同,所以我们已经确定了.

现在让我们看看

0b1000 >> 4 << 4
Run Code Online (Sandbox Code Playgroud)

第一个班次将会这样做,0b1000 -> 0b0000因为它将一个班次从数字的右侧移开.第二个班次将尝试向后移动,但没有任何改变(0 << n == 0对于任何自然数n).该函数用于比较0 != 0b1000,当然也会中断for块的执行.

然后函数返回4-1,即3数字右侧有多少个零.