Skip to main content
 首页 » 编程设计

Python:>>= 做什么

2025年05月04日15me-sa

我正在学习 python,我偶然发现了一些我不明白的东西。

例如:

x = 50 
 
while x: 
    print(x) 
    x >>= 1 

输出:

50 
25 
12 
6 
3 
1 

所以我推断如果它不是整数或类似的东西,它会除以二并向左舍入。

但是当我将它更改为 x >>= 3 时,例如输出是:

50 
6 

谁能解释一下 >>= 是做什么的?

如果是这样,这种运算符有哪些有用的应用。

请您参考如下方法:

>>=是augmented assignment statement对于 >> right-shift operator .对于不可变类型,例如 int它完全与以下内容相同:

x = x >> 1 

右移 x 中的位向右一步。

如果您打印 x 的二进制表示,您可以看到它做了什么第一:

>>> x = 50 
>>> format(x, '08b') 
'00110010' 
>>> x >>= 1 
>>> format(x, '08b') 
'00011001' 
>>> x = 50 
>>> x >>= 3 
>>> format(x, '08b') 
'00000110' 
>>> x 
6 

每向右移位相当于楼层除以2;因此,3 次轮类就好像 x被除以 2 的 3 次方,然后取整数。

互补运算符是左移 <<运算符,将左边的整数乘以 2;它是一个二进制二次幂运算符:

>>> x = 6 
>>> format(x, '08b') 
'00000110' 
>>> x <<= 3 
>>> x 
48 
>>> format(x, '08b') 
'00110000' 

扩充赋值运算符在应用于可变类型(例如列表对象)时可能会有不同的行为,其中操作可以就地发生。例如,listobj += [1, 2, 3]会改变 listobj本身,而不是创建一个新的列表对象,就好像 listobj.extend([1, 2, 3])被调用了。