Python 在对其进行操作之前,是否应转换长二进制字符串
在一个问题中,我应该处理作为二进制文件给出的长输入。像Python 在对其进行操作之前,是否应转换长二进制字符串,python,python-2.7,integer,bit-manipulation,time-complexity,Python,Python 2.7,Integer,Bit Manipulation,Time Complexity,在一个问题中,我应该处理作为二进制文件给出的长输入。像 “10001010111101010100100101010101011010101” 在这个问题中,我需要使用位运算符或|。我研究过这个操作符的用法,它似乎适用于正则整数而不是二进制。所以我在上面调用int(thing,2)。之后,我使用位运算符。然而有些事困扰着我。python解释器不是再次将其更改为二进制以按位应用还是对其应用?那么,这不是一个重复的步骤吗 是否没有其他方法可以直接使用这个字符串,也许迭代所有字母是更好的方法?还有另一
“10001010111101010100100101010101011010101”
在这个问题中,我需要使用位运算符或|
。我研究过这个操作符的用法,它似乎适用于正则整数而不是二进制。所以我在上面调用int(thing,2)
。之后,我使用位运算符。然而有些事困扰着我。python解释器不是再次将其更改为二进制以按位应用还是对其应用?那么,这不是一个重复的步骤吗
是否没有其他方法可以直接使用这个字符串,也许迭代所有字母是更好的方法?还有另一个关于整数精度的问题。因为有时输入大于500个字符,所以我无法将其存储为整数
我试过这样的方法,想象一下a
和b
是两个二进制字符串
for comparison in zip(a, b):
if any(comparison):
# Do stuff if OR gives 1
事实证明,这确实非常缓慢。请开导我
提前感谢。首先一定要使用
int(二进制字符串,2)
任何其他方法都需要更长的时间。
(尽管使用zip和any的for循环非常聪明,但不是最佳的)
Python解释器不会将您的数字更改回二进制,因为计算机已将数字作为二进制存储在内存中,它将使用CPU指令对2个数字进行运算或运算,而不首先转换它们。无需重复步骤。首先明确使用
int(二进制字符串,2)
任何其他方法都需要更长的时间。
(尽管使用zip和any的for循环非常聪明,但不是最佳的)
Python解释器不会将您的数字更改回二进制,因为计算机已将数字作为二进制存储在内存中,它将使用CPU指令对2个数字进行运算或运算,而不首先转换它们。没有重复的步骤。没有类似“返回二进制”的步骤。整数(和所有数字)已存储为二进制。所以答案是否定的,没有额外的步骤。非常简单。但是,直接使用字符串(如果存在方法)不应该更快吗?不,因为CPU有专门的运算符用于对数字进行逐位运算。所以我应该在任何地方选择逐位运算吗?因为它比整数运算快?注意:“二进制字符串”可能有不同的含义(而不是“01”-字符串)。相关:,。没有类似“返回二进制”的步骤。整数(和所有数字)已存储为二进制。所以答案是否定的,没有额外的步骤。非常简单。但是,直接使用字符串(如果存在方法)不应该更快吗?不,因为CPU有专门的运算符用于对数字进行逐位运算。所以我应该在任何地方选择逐位运算吗?因为它比整数运算快?注意:“二进制字符串”可能有不同的含义(而不是“01”-字符串)。相关:,。谢谢你和评论,你帮了我很大的忙:)@MaxPythone:Python中的整数有无限的精度。单个CPU指令对有限数(例如64位整数)进行操作。按位操作的实现方式取决于Python实现(例如,CPython可能使用30位数字)。尽管(最终)CPU可能会执行带有一些数字的
或指令gmpy2
integer算术在大数(数百位数字)上可能更快。谢谢你和评论员,你帮了大忙:)@MaxPythone:Python中的整数具有无限精度。单个CPU指令对有限数(例如64位整数)进行操作。按位操作的实现方式取决于Python实现(例如,CPython可能使用30位数字)。尽管(最终)CPU可能会执行带有一些数字的或指令gmpy2
整数运算在大数(数百位)上可能更快。