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: проверьте, может ли значение быть преобразовано в int в понимании списка
  • перечислить список для цикла в 2D-матрице
  • Как закодировать целое число в строку base64 в python 3
  • Измените строку целых чисел, разделенных пробелами, на список int
  • Операции битов Python в списке Int
  • Преобразование Python в int int
  • Почему «20000 - 20000» приводит к True?
  • Понимание распределения памяти для больших целых чисел в Python
  • Как читать входы как целые числа?
  • Преобразуйте целое число в строку его значений ascii
  • Python - лучший язык программирования в мире.