python实现32位int溢出模拟(类似C,C++)

来源:互联网 发布:被子四件套淘宝 编辑:程序博客网 时间:2024/06/06 05:29

今天的工作中,遇到1个c实现的算法,我要用python实现。c里面有一段是需要将溢出的32位int做为下一步操作的输入。但是在python里,我们知道,当int溢出时,会自动类型转换为long,这样就无法用python实现这个算法。

找了挺多的资料,一开始的思路是:python肯定有某个类似标识位的东西,可以设置int不自动升级为long,很遗憾,没有找到。

后来决定用代码自行控制int的溢出操作。在stackoverflow上有个人提供了以下代码,经测试,可行。

#! /usr/bin/env pythonimport sysdef int_overflow(val):    maxint = 2147483647    if not -maxint-1 <= val <= maxint:        val = (val + (maxint + 1)) % (2 * (maxint + 1)) - maxint - 1    return vala = 2147483647print int_overflow(a)print int_overflow(a + 1)print int_overflow(a + 2)print int_overflow(a + 3)print int_overflow(100 * a)print '\n'b = -aprint int_overflow(b)print int_overflow(b - 1)print int_overflow(b - 2)print int_overflow(b - 3)print int_overflow(100 * b)