gpt4 book ai didi

python - 在python中循环一个二进制数

转载 作者:行者123 更新时间:2023-12-01 01:15:41 25 4
gpt4 key购买 nike

有没有循环二进制数的函数?例如:

100010001000 turns 010001000100
and it turns 001000100010 then 000100010001 and then 100010001000 so on so forth

最佳答案

如果 100010001000 是一个字符串,那么它是 Python 中的一个序列。

因此,您可以使用包含 cycleitertools 包。功能。这个函数可以循环迭代你的二进制字符串:

>>> n = "100010001000"
>>> c = itertools.cycle(n)
>>> next(c)
'1'
>>> next(c)
'0'
>>> next(c)
'0'
>>> next(c)
'0'
>>> next(c)
'1'
...

您可以使用此函数来移动数字:

>>> c = itertools.cycle(n)
>>> next(c)
'1'
>>> "".join(next(c) for _ in range(len(n)))
'000100010001'

如果重复最后两个操作,就会得到循环(但以另一种方式)。

您还可以使用切片串联,例如:

>>> n = "100010001000"
>>> n = n[-1:] + n[0:-1]
>>> n
'010001000100'
>>> n = n[-1:] + n[0:-1]
>>> n
'001000100010'
>>> n = n[-1:] + n[0:-1]
>>> n
'000100010001'

如果您的数字是整数,则可以使用二元运算符,例如 >>、<<、& 和 |。为此,您需要知道二进制整数的长度,这里有 12 位数字。只需计算所有数字设置为 1 的掩码 m 即可。然后进行旋转:

>>> m = int("111111111111", 2)
>>> n = int("100010001000", 2)
>>> bin(n)
'0b100010001000'
>>> n = (n >> 1) | (n << 11) & m
>>> bin(n)
'0b10001000100'
>>> n = (n >> 1) | (n << 11) & m
>>> bin(n)
'0b1000100010'
>>> n = (n >> 1) | (n << 11) & m
>>> bin(n)
'0b100010001'
>>> n = (n >> 1) | (n << 11) & m
>>> bin(n)
'0b100010001000'

关于python - 在python中循环一个二进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54373726/

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