Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.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 大数的int(str)_Python_Python 3.x - Fatal编程技术网

Python 大数的int(str)

Python 大数的int(str),python,python-3.x,Python,Python 3.x,如果我有一个太大的数字,不能用64位来表示,那么我会收到一个包含它的字符串。 如果我使用: num = int(num_str) 我问这个问题是因为它看起来工作准确,我不明白如何分配更多的内存 我被要求检查一个巨大的数字是否是2的幂。有人建议: def power(self, A): A = int(A) if A == 1: return 0 x =bin(A) if x.count('1')>1: return 0

如果我有一个太大的数字,不能用64位来表示,那么我会收到一个包含它的字符串。 如果我使用:

num = int(num_str)
我问这个问题是因为它看起来工作准确,我不明白如何分配更多的内存

我被要求检查一个巨大的数字是否是2的幂。有人建议:

def power(self, A):
    A = int(A)
    if A == 1:
        return 0
    x =bin(A)
    if x.count('1')>1:
        return 0
    else:
        return 1

虽然我理解为什么在常规情况下它会起作用,但事实上数字远大于2^64,而且它仍然有效,这让我感到困惑。

根据Python手册关于整数表示的描述:

这些表示无限范围内的数字,仅受可用虚拟内存的限制。为了移位和掩码操作的目的,假设采用二进制表示,负数表示为2的补码的变体,这使人产生无限符号位串向左延伸的错觉


根据Python手册对整数表示的描述:

这些表示无限范围内的数字,仅受可用虚拟内存的限制。为了移位和掩码操作的目的,假设采用二进制表示,负数表示为2的补码的变体,这使人产生无限符号位串向左延伸的错觉


这是因为Python支持任何大小的整数。@Booboo你应该把它作为答案而不是注释发布。@agcala好的,我发布了。现在大多数计算机都有32位/64位或多个寄存器和命令集,可以在一个周期内添加/sub/mul 64位甚至4*64位寄存器。C/C/Java/。。。它们都使用8位/16位/32位/64位大小的数字作为基类型,因此它们的计算可以利用这些特殊的位操作。但是语言也有更大的整数类型f,e,Javas math.biginger/BigDecimal,它们的计算速度稍慢,但可以接受更大的数字。Python在幕后为您做这件事-整数总是非常大。这是因为Python可以支持任何大小的整数。@Booboo您应该将其作为答案而不是注释发布。@agcala好的,是的。现在大多数计算机都有32位/64位或多个寄存器和命令集,可以在一个周期内添加/sub/mul 64位甚至4*64位寄存器。C/C/Java/。。。它们都使用8位/16位/32位/64位大小的数字作为基类型,因此它们的计算可以利用这些特殊的位操作。但是语言也有更大的整数类型f,e,Javas math.biginger/BigDecimal,它们的计算速度稍慢,但可以接受更大的数字。Python在幕后为您做这件事——整数总是非常大。