Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.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_Overflow - Fatal编程技术网

为什么不是';Python是否抛出溢出错误?

为什么不是';Python是否抛出溢出错误?,python,overflow,Python,Overflow,我正在学习Python,我有一个关于数据类型范围的问题 该计划: print("8 bits:", pow(2, 8)-1) print("16 bits:", pow(2, 16)-1) print("32 bits:", pow(2, 32)-1) print("64 bits:", pow(2, 64)-1) print( pow(18446744073709551615+18446744073709551615+2, 9) ) 生成以下输出: 8 bits: 255 16 bits:

我正在学习Python,我有一个关于数据类型范围的问题

该计划:

print("8 bits:", pow(2, 8)-1)
print("16 bits:", pow(2, 16)-1)
print("32 bits:", pow(2, 32)-1)
print("64 bits:", pow(2, 64)-1)

print( pow(18446744073709551615+18446744073709551615+2, 9) )
生成以下输出:

8 bits: 255
16 bits: 65535
32 bits: 4294967295
64 bits: 18446744073709551615
12663316555422952143897729076205936129798725073982046203600028471956337925454431
59912019973433564390346740077701202633417478988975650566195033836314121693019733
02667340133957632

我的问题是:Python如何计算最后一次调用
pow()
的结果?我的CPU无法处理超过64位的整数,因此我希望该操作会产生溢出。

Python长整数类型仅受可用内存的限制。在内存耗尽之前,数字会一直出现

引述:

长整数具有无限精度


当需要无限精度时,Python将透明地使用长整数。在Python 3中,所有整数都是长整数;没有区别。

Python知道整数的两种数据类型:
int
long
。如果一个数字对于
int
(64位)来说太大,则自动使用
。此外,如果计算结果对于
int
而言太大,则使用
long

您可以显式地将文字声明为long;只需添加一个
L
(也可以添加
L
,但不鼓励使用,因为在许多字体中,这是无法区分的,或者至少非常类似于
1
(一个)字符)。所以,
5L
是一个
长的

通常,这种区别并不重要;但是,如果比较值的类型(因为
type(5)
≠ <代码>类型(5L)

long
s不受任何特定位数的限制。然而,在荒谬的高值下,内存消耗和计算时间构成了实际限制


还要记住,使用这些
long
计算东西可能比打印它们快,因为在将它们转换为字符串进行打印时,它们必须转换为十进制。

只需将
print
放入
print(pow)中即可(
Um,你的问题是什么?Python整数处理任意大的数字。它不受64位整数的限制。在Python 2中,这两种类型之间的切换是完全透明的;只有C扩展需要考虑差异,以及在使用任何限制为
sys.maxsize
(列表、元组和
range()
xrange()
)。在任何情况下,您都只是在这里混水摸鱼;这不是关于
long
int
的问题。OP包含
print
作为一条语句。我因此假设了Python 2。您怎么会认为它是Python 3?啊,当然,
str(1L)
仍然是
1
;我的错误。当我比较一次值的类型时,我无意中发现了
int
long
之间的差异,因此这些知识可能很有用。但正如我所说的,“通常这种区别并不重要”。