Python 支持任意位长度的整数,但我想模拟int3232 位整数的所有溢出荣耀。我对此有几个问题和意见int32有INT32_MIN = -(1 << 31)和INT32_MAX = (1 << 31) - 1python 使用 2 的补码吗?在 中int32,正数int32在第 31 位前有前导零,负数在第 31 位前int32有前导 1(这是因为它们是 2 的补码)。在python中,正整数被认为具有无限(或任意)多个前导数,负整数被认为具有无限(或任意)多个前导数。例如:123 看起来像:0b0000_0000_0000_0000_0000_0000_0111_1011 在 int320b…0_0111_1011在python中(…0表示无限多个前导0)-123 看起来像:0b1111_1111_1111_1111_1111_1111_1000_0101 在 int320b…1_1000_0101在python中(…1表示无限多个前导1)鉴于这一切,我想出了这个代码来模拟int32,但想检查一下: INT32_MIN = -(1 << 31) INT32_MAX = (1 << 31) - 1 INT32_MASK = (1 << 32) - 1 INT32_SIGNBIT = 1 << 31 def int32(x): sb = bool(x & INT32_SIGNBIT) i32 = x & INT32_MASK if sb: i32 += ~INT32_MASK return i32 a = int32(INT32_MAX + 1) b = int32(INT32_MIN - 1) aa = a == INT32_MIN bb = b == INT32_MAX当您添加所需它似乎溢出1到INT32_MAX或减去1从INT32_MIN,所以这给了我一些信心,这是正确的,但是这只是两个测试用例。这对你来说正确吗?