Python 大数的int(str)
如果我有一个太大的数字,不能用64位来表示,那么我会收到一个包含它的字符串。 如果我使用: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
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在幕后为您做这件事——整数总是非常大。