Открыть сервисСервис

Целочисленный тип данных

Целочисленный тип данных (integer, int) — примитивный тип данных в языках программирования, значения которого представляют собой целые числа. В отличие от типа с плавающей точкой, целочисленный тип хранит числа без дробной части и знака запятой. В большинстве языков программирования (C, C++, Java, C#, Python, JavaScript) используется сокращение int для обозначения базового целочисленного типа.

Представление в памяти

Целое число в компьютере хранится в виде последовательности битов. Классическое представление — дополнительный код (two's complement), в котором старший бит отвечает за знак числа. При фиксированной разрядности n битов в дополнительном коде можно представить числа от −2ⁿ⁻¹ до 2ⁿ⁻¹ − 1.

Типичный размерДиапазон значений
8 бит (int8_t, byte)−128 … 127
16 бит (int16_t, short)−32 768 … 32 767
32 бит (int32_t, int)−2 147 483 648 … 2 147 483 647
64 бит (int64_t, long long)−9,2·10¹⁸ … 9,2·10¹⁸

В языке C стандарт гарантирует, что short занимает не менее 16 бит, int — не менее 16 бит (на практике 32 бита), long — не менее 32 бит. В языке Java тип int всегда 32-битный, а long — 64-битный. В Python целые числа имеют произвольную точность и ограничены только объёмом доступной памяти.

Беззнаковые и знаковые типы

Помимо знаковых целочисленных типов, во многих языках существуют беззнаковые (unsigned) варианты, в которых все биты используются для представления величины. Беззнаковый 32-битный тип хранит значения от 0 до 4 294 967 295. Выбор между знаковым и беззнаковым типом определяется задачей: индексы массивов, счётчики и битовые маски обычно объявляются как беззнаковые, тогда как результаты вычитания и значения, которые могут быть отрицательными, — как знаковые.

Арифметические операции

Над целыми числами определены стандартные арифметические операции: сложение, вычитание, умножение, целочисленное деление и остаток от деления. Особенностью целочисленной арифметики является переполнение: если результат операции выходит за пределы диапазона типа, поведение зависит от языка. В C и C++ переполнение знакового типа не определено стандартом, тогда как в Java и C# гарантировано переполнение по модулю 2ⁿ (циклическое переполнение).

Целочисленное деление в большинстве языков отбрасывает дробную часть: 7 / 2 = 3. Оператор остатка % возвращает остаток от деления, причём в C и Java знак остатка совпадает со знаком делимого.

Целочисленные типы в популярных языках

ЯзыкБазовый типРазмерПримечание
C / C++int32 бита (обычно)long long — 64 бита
Javaint32 битаlong — 64 бита
C#int32 битаlong — 64 бита
Pythonintпроизвольныйбез переполнения
JavaScriptNumber64 бит (IEEE 754)целые до 2⁵³ без потерь
Goint32 или 64 битазависит от платформы
Rusti3232 битаi64 — 64 бита

В JavaScript нет отдельного целочисленного типа: все числа хранятся как 64-битные числа с плавающей точкой по стандарту IEEE 754, поэтому целые значения выше 2⁵³ − 1 (9 007 199 254 740 991) представляются с потерей точности. Для работы с большими целыми числами в JavaScript используется объект BigInt.

Применение

Целочисленные типы используются повсеместно: для индексации массивов и списков, подсчёта элементов, хранения идентификаторов, работы с битовыми масками и флагами, представления кодов символов (Unicode) и в алгоритмах, где дробная часть не нужна (например, в алгоритмах Евклида для нахождения наибольшего общего делителя). В системном программировании целочисленная арифметика применяется для адресации памяти и работы с регистрами процессора.

См. также

Источники

Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru