在操作之前是否应该转换一个长二进制字符串
Should a convert a long binary string before operation on it
在一个问题中,我应该处理以二进制形式给出的长输入。喜欢
"1000101011111101010100100101010101010101"
我需要在这个问题中使用按位运算符 OR |
。我研究了这个运算符的使用,它似乎适用于常规整数而不是二进制文件。所以我在上面调用 int(thing, 2)
。之后,我使用按位运算符。但是有些事情让我很困扰。 python 解释器不是再次将它改回二进制以在其上应用按位或吗?所以这不是重复的步骤吗?
没有其他方法可以直接使用这个字符串,也许对所有字母进行迭代是更好的方法?还有一个关于整数精度的问题。因为有时输入大于500个字符所以我不能把它存储为一个整数。
我试过这样的东西,想象一下 a
和 b
是两个二进制字符串。
for comparison in zip(a, b):
if any(comparison):
# Do stuff if OR gives 1
事实证明这确实很慢。请赐教。
提前致谢。
首先肯定使用int(binary_string, 2)
任何其他方法都需要更长的时间。
(虽然使用zip和any的for循环很聪明,但不是最优的)
Python 解释器不会将您的数字改回二进制,因为计算机已经将数字作为二进制存储在内存中,它将使用 CPU 指令对 2 个数字进行或运算而不转换它们第一的。没有重复的步骤。
在一个问题中,我应该处理以二进制形式给出的长输入。喜欢
"1000101011111101010100100101010101010101"
我需要在这个问题中使用按位运算符 OR |
。我研究了这个运算符的使用,它似乎适用于常规整数而不是二进制文件。所以我在上面调用 int(thing, 2)
。之后,我使用按位运算符。但是有些事情让我很困扰。 python 解释器不是再次将它改回二进制以在其上应用按位或吗?所以这不是重复的步骤吗?
没有其他方法可以直接使用这个字符串,也许对所有字母进行迭代是更好的方法?还有一个关于整数精度的问题。因为有时输入大于500个字符所以我不能把它存储为一个整数。
我试过这样的东西,想象一下 a
和 b
是两个二进制字符串。
for comparison in zip(a, b):
if any(comparison):
# Do stuff if OR gives 1
事实证明这确实很慢。请赐教。
提前致谢。
首先肯定使用int(binary_string, 2)
任何其他方法都需要更长的时间。
(虽然使用zip和any的for循环很聪明,但不是最优的)
Python 解释器不会将您的数字改回二进制,因为计算机已经将数字作为二进制存储在内存中,它将使用 CPU 指令对 2 个数字进行或运算而不转换它们第一的。没有重复的步骤。