python 移位运算
最近工作中看到看到一段代码,不太了解,哪位大侠能够帮小弟解释一下。
def roundOfPower2(number):
t = number
t = t - 1
t = t | t >> 1
t = t | t >> 2
t = t | t >> 4
t = t | t >> 8
t = t | t >> 16
return t + 1
这个函数实在做什么我不太明白,如果number是0~2**16返回值大小与number相同,如果大于2**16~2**32返回值就会改变。(第一次在这里提问题,不太了解规矩,如果那里做的不对大家见谅,呵呵)