Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在对其进行操作之前,是否应转换长二进制字符串_Python_Python 2.7_Integer_Bit Manipulation_Time Complexity - Fatal编程技术网

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
整数运算在大数(数百位)上可能更快。