gpt4 book ai didi

Python:>>= 做什么?

转载 作者:太空宇宙 更新时间:2023-11-04 06:47:25 25 4
gpt4 key购买 nike

我正在学习 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])被调用了。

关于Python:>>= 做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21672006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com