Python: Пусть Python int переполняется, как C int

В Python, когда int больше 2 ** 31, тогда он превратится в длинный:

a = 2147483647 a + 1 = 2147483648

b = -2147483648 b - 1 = -2147483649

но мне нужно переполнение int Python, как int в C:

a = 2147483647 a + 1 = -2147483648

b = -2147483648 b - 1 = 2147483647

Является ли это возможным? заранее спасибо!

2 Solutions collect form web for “Python: Пусть Python int переполняется, как C int”

Попробуйте numpy:

 >>> x = numpy.int32(2147483647) >>> x 2147483647 >>> type(x) <type 'numpy.int32'> >>> x+1 __main__:1: RuntimeWarning: overflow encountered in long_scalars -2147483648 >>> type(x+1) <type 'numpy.int32'> 

Просто убедитесь, что вы вызываете int на этих вещах, прежде чем передавать их в код, который ожидает нормального поведения переполнения Python.

Вы можете определить свой собственный класс и переопределить специальный метод __int__() вместе с различными другими специальными методами математического оператора, чтобы эмулировать числовой тип . Тогда ваш класс может поддерживать инвариант, что значение всегда находится в правильном диапазоне.

Например:

 def class Int32: def __init__(self): self.value = 0 def __init__(self, value): # Wrap value into [-2**31, 2**31-1] self.value = (value + 2**31) % 2**32 - 2**31 def __int__(self): return self.value def __add__(self, other): return Int32(self.value + other.value) # ... etc. for other mathematical operators 
  • Получение черепахи для отскока от стен
  • Как преобразовать список строк в целое число в python
  • Как проверить, имеет ли строка числовое значение в Python?
  • Я не могу найти правильную спецификацию форматирования для предыдущих нулей в python
  • Каков эффективный способ преобразования float в int в python?
  • Почему int (maxint) дает длинный, но int (int (maxint)) дает int? Это ошибка NumPy?
  • TypeError: Невозможно преобразовать объект 'int' в str неявно
  • Как закодировать целое число в строку base64 в python 3
  • Python - лучший язык программирования в мире.