首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何修复int溢出?

如何修复int溢出?
EN

Stack Overflow用户
提问于 2013-03-26 19:58:46
回答 2查看 598关注 0票数 0

我有一个python代码,它使用数字2637268776 (大于32位系统中的sys.maxint )。因此,它被另存为long类型。

我在代码中使用了C++框架绑定,因此我遇到了将其转换为int32的情况,从而导致int32溢出:

代码语言:javascript
运行
复制
2637268776 --> -1657698520

在我的例子中,它只能发生一次,所以可以放心地假设,如果整数是负的,我们就会有一个int溢出。我如何在数学上反转这些数字?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-26 20:02:10

您可以将2 * (sys.maxint + 1)添加到其中:

代码语言:javascript
运行
复制
>>> -1657698520 + (2 * (sys.maxint + 1))
2637268776L

但这只适用于原始值< 2 * (sys.maxint + 1),否则溢出将进入正数,或者更糟,再次溢出。

票数 1
EN

Stack Overflow用户

发布于 2013-03-26 20:02:46

简而言之,你不能。有许多长整数会映射到相同的负数。在您的示例中,它们是2637268776L、6932236072L、11227203368L、15522170664L、19817137960L等。

此外,由于这种溢出,也有可能获得正数。例如,4294967297L将映射到1。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15636550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档