8-900-374-94-44
[email protected]
Slide Image
Меню

Int min: INT_MAX and INT_MIN in C/C++ and Applications

Пределы целых чисел | Microsoft Learn

Twitter LinkedIn Facebook Адрес электронной почты

  • Статья

Только для систем Майкрософт

Ограничения для целочисленных типов представлены в следующей таблице. Макросы препроцессора для этих ограничений также определяются при включении стандартных интерфейсов файла <заголовков>.

Ограничения для целочисленных констант

КонстантаЗначениеЗначение
CHAR_BITКоличество битов в наименьшей переменной, которая не является битовым полем.8
SCHAR_MINМинимальное значение для переменной типа signed char.–128
SCHAR_MAXМаксимальное значение для переменной типа signed char.127
UCHAR_MAXМаксимальное значение для переменной типа unsigned char.255 (0xff)
CHAR_MINМинимальное значение для переменной типа
char
.
-128; 0, если /J используется параметр
CHAR_MAXМаксимальное значение для переменной типа char.127; 255, если /J используется параметр
MB_LEN_MAXМаксимальное количество байтов в многосимвольной константе.5
SHRT_MINМинимальное значение для переменной типа short.-32768
SHRT_MAXМаксимальное значение для переменной типа short.32767
USHRT_MAXМаксимальное значение для переменной типа unsigned short.
65 535 (0xffff)
INT_MINМинимальное значение для переменной типа int.-2147483648
INT_MAXМаксимальное значение для переменной типа int.2147483647
UINT_MAXМаксимальное значение для переменной типа unsigned int.4 294 967 295 (0xffffffff)
LONG_MINМинимальное значение для переменной типа long.-2147483648
LONG_MAXМаксимальное значение для переменной типа long.2147483647
ULONG_MAXМаксимальное значение для переменной типа
unsigned long
.
4 294 967 295 (0xffffffff)
LLONG_MINМинимальное значение для переменной типа long long-9223372036854775808
LLONG_MAXМаксимальное значение для переменной типа long long9223372036854775807
ULLONG_MAXМаксимальное значение для переменной типа unsigned long long18446744073709551615 (0xffffffffffffffff)

Если значение превышает максимально возможное представление целочисленного типа, компилятор Microsoft выдает ошибку.

См. также раздел

Плавающие ограничения

Целочисленные пределы C и C++

Редактировать

Твиттер LinkedIn Фейсбук Электронная почта

  • Статья

Специально для Microsoft

Ограничения для целочисленных типов в C и C++ перечислены в следующей таблице. Эти ограничения определены в заголовочном файле стандарта C 9.0021 <лимиты.h> . Заголовок стандартной библиотеки C++ включает , который включает .

Microsoft C также позволяет объявлять целочисленные переменные размера, которые представляют собой целочисленные типы размера 8, 16, 32 или 64 бита. Дополнительные сведения о целочисленных размерах в C см. в разделе Целочисленные типы с размерами.

Ограничения на целочисленные константы

Константа Значение Значение
CHAR_BIT Количество битов в наименьшей переменной, которая не является битовым полем. 8
ШАР_МИН Минимальное значение для переменной типа signed char . -128
SCHAR_MAX Максимальное значение для переменной типа signed char . 127
УЧАР_МАКС Максимальное значение для переменной типа unsigned char . 255 (0xff)
СИМВОЛ_МИН Минимальное значение переменной типа
char
.
-128; 0, если используется параметр /J
СИМВ_МАКС Максимальное значение переменной типа char . 127; 255, если используется опция /J
МБ_LEN_МАКС Максимальное количество байтов в многосимвольной константе. 5
SHRT_MIN Минимальное значение для переменной типа короткая . -32768
SHRT_MAX Максимальное значение для переменной типа короткая . 32767
USHRT_MAX Максимальное значение для переменной типа unsigned short
.
65535 (0xffff)
INT_MIN Минимальное значение для переменной типа int . -2147483647 — 1
INT_MAX Максимальное значение переменной типа int . 2147483647
UINT_MAX Максимальное значение для переменной типа целое число без знака . 4294967295 (0xffffffff)
LONG_MIN Минимальное значение переменной типа long . -2147483647 — 1
LONG_MAX Максимальное значение переменной типа
long
.
2147483647
ULONG_MAX Максимальное значение переменной типа unsigned long . 4294967295 (0xffffffff)
LLONG_MIN Минимальное значение переменной типа long long . -9 223 372 036 854 775 807 — 1
LLONG_MAX Максимальное значение переменной типа long long . 9 223 372 036 854 775 807
ULLONG_MAX Максимальное значение переменной типа unsigned long long . 18 446 744 073 709 551 615 (0xffffffffffffffff)

Если значение превышает максимальное целочисленное представление, компилятор Microsoft выдает ошибку.

END Специально для Microsoft

См. также

Целочисленные константы C

Обратная связь

Просмотреть все отзывы о странице

python — максимальное и минимальное значения для целых чисел

спросил

Изменено 28 дней назад

Просмотрено 1,8 млн раз

Как представить минимальное и максимальное значения для целых чисел в Python? В Java у нас есть Integer. MIN_VALUE и Integer.MAX_VALUE .


См. также: Каково максимальное число с плавающей запятой в Python?.

  • питон
  • целое число
6

Python 3

В Python 3 этот вопрос не применяется. Простой тип int неограничен.

Однако на самом деле вы можете искать информацию о текущем размере слова интерпретатора , который в большинстве случаев будет таким же, как размер слова машины. Эта информация по-прежнему доступна в Python 3 как sys.maxsize , что является максимальным значением, которое может быть представлено словом со знаком. Соответственно, это размер максимально возможного списка или последовательности в памяти.

Как правило, максимальное значение, представляемое словом без знака, равно sys.maxsize * 2 + 1 , а количество бит в слове будет math.log2(sys.maxsize * 2 + 2) . Смотрите этот ответ для получения дополнительной информации.

Python 2

В Python 2 максимальное значение для простых значений int доступно как sys.maxint :

 >>> sys.maxint # в моей системе, 2**63-1
9223372036854775807
 

Вы можете рассчитать минимальное значение с помощью -sys.maxint - 1 , как показано в документации.

Python плавно переключается с простых целых чисел на длинные, как только вы превысите это значение. Так что в большинстве случаев вам не нужно будет это знать.

21

Если вам просто нужно число, которое больше всех остальных, вы можете использовать

 float('inf')
 

аналогичным образом, число меньше, чем все остальные:

 float('-inf')
 

Это работает как в Python 2, так и в 3.

8

Константа sys.maxint была удалена из Python 3.0 и более поздних версий, вместо этого используйте sys.maxsize .

Целые числа

  • PEP 237 : По сути, long переименован в int . То есть имеется только один встроенный целочисленный тип с именем int ; но он ведет себя в основном как старый тип long .

  • Константа sys.maxint была удалена, так как больше нет ограничения на значение целых чисел. Однако sys.maxsize можно использовать как целое число, большее, чем любой практичный список или строковый индекс. Он соответствует «естественному» целочисленному размеру реализации и обычно равен 9.0021 sys.maxint в предыдущих выпусках на той же платформе (при тех же параметрах сборки).
2

Для Python 3 не существует максимального или минимального значения для типа int .

Вместо этого вас может заинтересовать sys.maxsize . Согласно документации:

sys. maxsize

Целое число, дающее максимальное значение переменной типа Py_ssize_t может брать. Обычно это 2**31 - 1 на 32-разрядной платформе и 2**63 - 1 на 64-битная платформа.

 система импорта
max_size = sys.maxsize
минимальный_размер = -sys.maxsize - 1
 
9

В Python 2 целые числа будут автоматически переключаться с представления фиксированного размера int на представление переменной ширины long , как только вы передадите значение sys.maxint , которое равно 2 31 — 1 или 2 63 — 1 в зависимости от вашей платформы. Обратите внимание на добавленный здесь L :

 >>> 9223372036854775807
9223372036854775807
>>> 9223372036854775808
9223372036854775808Л
 

Из руководства по Python 2.7:

Числа создаются числовыми литералами или в результате встроенных функций и операторов. Целочисленные литералы без прикрас (включая двоичные, шестнадцатеричные и восьмеричные числа) дают простые целые числа, если только значение, которое они обозначают, не слишком велико, чтобы быть представленным как простое целое число, и в этом случае они дают длинное целое число. Целочисленные литералы с 9Суффикс 0021 ‘L’ или 'l' дает длинные целые числа (предпочтительнее 'L' , потому что 1l слишком похоже на одиннадцать!).

Python очень старается притвориться, что его целые числа являются математическими целыми числами и не ограничены. Он может, например, легко вычислить гугол:

 >>> 10**100
100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 л
 
4

Вы можете использовать ‘inf’ следующим образом:

 импортировать математику
bool_true = 0 < math.inf
bool_false = 0 < -math.inf
 

См.: math — Математические функции

2

Если вам нужен максимум для индексов массива или списка (эквивалент size_t в C/C++), вы можете использовать numpy:

 np. iinfo(np.intp).max
 

Это то же самое, что и sys.maxsize , однако преимущество в том, что вам не нужен import sys только для этого.

Если вы хотите макс. для собственного int на машине:

 np.iinfo(np.intc).max
 

Другие доступные типы можно посмотреть в док.

Для чисел с плавающей запятой вы также можете использовать sys.float_info.max .

1

sys.maxsize на самом деле не является максимальным поддерживаемым целочисленным значением. Вы можете удвоить maxsize и умножить его на себя, и оно останется действительным и правильным значением.

Однако, если вы попробуете sys.maxsize ** sys.maxsize , это приведет к зависанию вашей машины на значительное время. Как многие указывали, размер в байтах и ​​битах не имеет значения, потому что его практически не существует. Я предполагаю, что python просто счастливо расширяет свои целые числа, когда ему нужно больше места в памяти. Так что в общем-то нет предела.

Теперь, если вы говорите об упаковке или хранении целых чисел безопасным способом, чтобы впоследствии их можно было извлечь с целостностью, то, конечно, это уместно. Я действительно не уверен в упаковке, но я знаю Python 9Модуль 0021 pickle хорошо справляется с этими задачами. Строковые представления, очевидно, не имеют практических ограничений.

Суть в следующем: каков ваш лимит приложений? Что требуется для числовых данных? Используйте этот предел вместо практически несуществующего целочисленного предела Python.

Я очень полагаюсь на подобные команды.

 python -c 'импорт системы; печать (sys.maxsize)'
 

Максимальное число возвращено: 9223372036854775807

Для получения дополнительных ссылок на «sys» вы должны получить доступ

https://docs.python.org/3/library/sys.html

https://docs.python.org/3/library/sys.html#sys.maxsize

1

В CPython 3. 11 в 64-разрядной системе максимальное и минимальное целые числа равны

 2 ** ((2 ** 63 - 1) * 30) - 1
-(2**(2**63*30)-1)
 

, потому что целые числа Python реализованы как массив 30-битных целых чисел, хранящих абсолютное значение целого числа, а 64-битное целое число в дополнении до двух со знаком хранит длину этого массива, а также знак целого числа Python, поэтому отрицательное целое число имеет отрицательный «размер».

Вам понадобится 35 экзабайт памяти, чтобы создать его, что при сегодняшних (апрель 2023 года) ценах в 65 долларов за 32 ГБ на NewEgg будет стоить 70 миллиардов долларов. С практической точки зрения, максимальное целое число Python ограничено объемом памяти на вашем компьютере.


CPython 3.11 хранит целые числа следующим образом (я упростил реальный код, убрав все макросы):

 struct PyLongObject {
    Py_ssize_t ob_refcnt;
    PyTypeObject* ob_type;
    Py_ssize_t ob_size; /* Количество элементов в переменной части */
    uint32_t ob_digit[1];
};
 

Таким образом, в 64-битной системе он хранит массив 32-битных целых чисел и использует Py_ssize_t , 64-битное целое число со знаком (по сути, 63-битный ingeter) для хранения длины этого массива.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *