Целые числа

Целые числа встречаются почти в каждой задаче: количество, номер, шаг цикла, год, расстояние в метрах и т.п.

В Java для таких значений обычно используется тип int.

int a = 7;
int b = 3;
int sum = a + b;

System.out.println(sum); // 10

Основное

Переменная целого типа объявляется так:

int name = value;

Примеры:

int x = 0;
int year = 2025;
int count = 10;

Основные операции над int:

Операция Знак
сложение +
вычитание -
умножение *
целочисленное деление /
остаток от деления %

Диапазон int

int – 32-битное знаковое целое число.

\[ -2^{31} \le x \le 2^{31} - 1 \]

То есть от \(-2\,147\,483\,648\) до \(2\,147\,483\,647\).

Примеры выражений для int

Выражение Значение Комментарий
20 + 3 23 сложение
20 - 3 17 вычитание
20 * 3 60 умножение
20 / 3 6 целочисленное деление, дробная часть отбрасывается
20 % 3 2 остаток
20 / 0 ошибка деление на ноль
2147483647 + 1 -2147483648 переполнение int

Переполнение int

Если результат вычисления не помещается в диапазон int, значение переполняется и «переворачивается» по модулю \(2^{32}\).

Пример:

int x = 2147483647;
System.out.println(x);     // 2147483647
System.out.println(x + 1); // -2147483648

Программа выведет:

2147483647
-2147483648

Тип int

int хранит целые числа без дробной части. Для счётчиков, номеров и большинства простых вычислений этого достаточно.

Основные арифметические операции

int a = 7;
int b = 3;

int sum = a + b;      // 10
int diff = a - b;     // 4
int prod = a * b;     // 21
int div = a / b;      // 2
int mod = a % b;      // 1

a / b для int – это деление с отбрасыванием дробной части. a % b – остаток от деления a на b.

Целочисленное деление и остаток

В математике деление даёт дробь: \(7 / 3 \approx 2.333\ldots\). В int-делении сохраняется только целая часть:

int a = 7;
int b = 3;

int q = a / b;   // 2
int r = a % b;   // 1

Всегда выполняется связь:

\[ a = (a / b) \cdot b + (a \% b) \]

Пример:

int minutes = 130;

int hours = minutes / 60;   // 2
int rest  = minutes % 60;   // 10

System.out.println(hours + " ч " + rest + " мин"); // 2 ч 10 мин

Скобки и порядок действий

Сначала выполняются *, /, %. Затем выполняются + и -.

Скобки можно использовать, чтобы явно задать порядок:

int a = 2 + 3 * 4;        // 14
int b = (2 + 3) * 4;      // 20

Ещё один частый момент – операции одного уровня считаются слева направо:

Выражение Значение
3 - 5 - 2 -4
(3 - 5) - 2 -4
3 - (5 - 2) 0

Примеры использования

Сумма, разность, произведение, целая часть и остаток:

int a = 7;
int b = 3;

System.out.println(a + b); // 10
System.out.println(a - b); // 4
System.out.println(a * b); // 21
System.out.println(a / b); // 2
System.out.println(a % b); // 1

Последняя цифра и количество десятков:

int n = 538;

int lastDigit = n % 10;   // 8
int tens = n / 10;        // 53

System.out.println(lastDigit); // 8
System.out.println(tens);      // 53

Когда нужен long

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

Типичные ситуации, когда int становится мало:

  • произведение или сумма многих чисел (например, несколько умножений подряд);
  • счёт в миллисекундах/наносекундах;
  • большие количества (население, объём данных, число комбинаций и т.п.).

Диапазон long

long – 64-битное знаковое целое число.

\[ -2^{63} \le x \le 2^{63} - 1 \]

То есть от \(-9\,223\,372\,036\,854\,775\,808\) до \(9\,223\,372\,036\,854\,775\,807\).

Правило выбора типа

Если числа точно маленькие – используйте int. Во всех остальных случаях безопаснее сразу брать long.

Что нужно запомнить

Целые числа в Java обычно хранят в типе int. Деление int / int даёт целую часть, остаток берётся через %. Если есть риск, что число не поместится в int, используйте long.

В C++ для целых чисел обычно используют тип int.

Основное

Переменная целого типа объявляется так:

int name = value;

Примеры:

int x = 0;
int year = 2025;
int count = 10;

Основные операции над int:

Операция Знак
сложение +
вычитание -
умножение *
целочисленное деление /
остаток от деления %

Диапазон int

В C++ диапазон int зависит от платформы, но обычно это 32-битное знаковое число.

Примеры выражений для int

Выражение Значение Комментарий
99 99 целочисленный литерал
+99 99 унарный плюс
-99 -99 унарный минус
5 + 3 8 сложение
5 - 3 2 вычитание
5 * 3 15 умножение
5 / 3 1 целочисленное деление, дробная часть отбрасывается
5 % 3 2 остаток
1 / 0 ошибка деление на ноль

a / b для int – это деление с отбрасыванием дробной части. a % b – остаток от деления a на b.

Целочисленное деление и остаток

В математике деление даёт дробь: \(7 / 3 \approx 2.333\ldots\). В int-делении сохраняется только целая часть:

int a = 7;
int b = 3;

int q = a / b;   // 2
int r = a % b;   // 1

Всегда выполняется связь:

\[ a = (a / b) \cdot b + (a \% b) \]

Пример:

int minutes = 130;

int hours = minutes / 60;   // 2
int rest  = minutes % 60;   // 10

std::cout << hours << " ч " << rest << " мин\n";

Скобки и порядок действий

Умножение и деление (*, /, %) выполняются раньше сложения и вычитания (+, -). Скобки можно использовать, чтобы явно задать порядок:

int a = 2 + 3 * 4;        // 14
int b = (2 + 3) * 4;      // 20

Операции одного уровня считаются слева направо:

Выражение Значение
3 - 5 - 2 -4
(3 - 5) - 2 -4
3 - (5 - 2) 0

Примеры использования

Сумма, разность, произведение, целая часть и остаток:

#include <iostream>

int main() {
    int a = 7;
    int b = 3;

    std::cout << (a + b) << "\n"; // 10
    std::cout << (a - b) << "\n"; // 4
    std::cout << (a * b) << "\n"; // 21
    std::cout << (a / b) << "\n"; // 2
    std::cout << (a % b) << "\n"; // 1
    return 0;
}

Перевод минут в часы и минуты:

#include <iostream>

int main() {
    int minutes = 130;

    int hours = minutes / 60;
    int rest  = minutes % 60;

    std::cout << hours << " ч " << rest << " мин\n"; // 2 ч 10 мин
    return 0;
}

Последняя цифра и количество десятков:

#include <iostream>

int main() {
    int n = 538;

    int lastDigit = n % 10; // 8
    int tens = n / 10;      // 53

    std::cout << lastDigit << "\n"; // 8
    std::cout << tens << "\n";      // 53
    return 0;
}

Что нужно запомнить

Деление int / int даёт целую часть, остаток берётся через %. Для дробных результатов удобно переводить выражение в double (например, делить на 2.0, а не на 2).

В Python целые числа имеют тип int.

Основное

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

x = 0
year = 2025
count = 10

Основные операции над целыми числами:

Операция Знак
сложение +
вычитание -
умножение *
деление /
целочисленное деление //
остаток от деления %

Примеры выражений

Выражение Значение Комментарий
99 99 целое число
+99 99 унарный плюс
-99 -99 унарный минус
5 + 3 8 сложение
5 - 3 2 вычитание
5 * 3 15 умножение
5 / 3 1.6666666666666667 обычное деление всегда дробное
5 // 3 1 целая часть
5 % 3 2 остаток
1 // 0 ошибка деление на ноль

Деление и остаток

В Python обычное деление / всегда даёт дробное число. Для целой части используют //.

a = 7
b = 3

q = a // b   # 2
r = a % b    # 1

print(q)
print(r)

Всегда выполняется связь:

\[ a = (a // b) \cdot b + (a \% b) \]

Пример:

minutes = 130

hours = minutes // 60
rest = minutes % 60

print(f"{hours} ч {rest} мин")

Скобки и порядок действий

Умножение и деление (*, /, //, %) выполняются раньше сложения и вычитания (+, -). Скобки можно использовать, чтобы явно задать порядок:

a = 2 + 3 * 4        # 14
b = (2 + 3) * 4      # 20

print(a)
print(b)

Примеры использования

Сумма, разность, произведение, целая часть и остаток:

a = 7
b = 3

print(a + b)   # 10
print(a - b)   # 4
print(a * b)   # 21
print(a // b)  # 2
print(a % b)   # 1

Перевод минут в часы и минуты:

minutes = 130

hours = minutes // 60
rest = minutes % 60

print(f"{hours} ч {rest} мин")  # 2 ч 10 мин

Последняя цифра и количество десятков:

n = 538

last_digit = n % 10   # 8
tens = n // 10        # 53

print(last_digit)  # 8
print(tens)        # 53

Что нужно запомнить

В Python целые числа – это int. / даёт дробный результат, // – целую часть, % – остаток.

Какие типы использовать

Язык Базовый тип для «обычных» чисел Для больших чисел Что важно помнить
Java int long int всегда 32-битный, long всегда 64-битный.
C++ int long long Размер int зависит от платформы, long long – не меньше 64 бит.
Python int int Целые числа растут по мере надобности (ограничение – память).

Пример: счётчик дней или количество учеников – обычно int. Количество миллисекунд или большое произведение – часто уже требует long (Java) или long long (C++).

Диапазон и переполнение

Язык Что происходит, если число не помещается
Java Для int и long значение «переворачивается» по модулю \(2^{32}\) или \(2^{64}\). Ошибки компиляции нет.
C++ Переполнение знакового int/long long может давать непредсказуемый результат. На это нельзя рассчитывать.
Python Переполнения как у int нет, но большие числа становятся медленнее и занимают больше памяти.

Если в Java или C++ есть риск переполнения, обычно переходят на более широкий тип (long / long long) и стараются делать вычисления в этом типе.

Деление целых

Язык Как получить целую часть Как получить дробный результат
Java a / b (оба целые) сделать один операнд double: (double) a / b или a / 2.0
C++ a / b (оба целые) сделать один операнд double: (double) a / b или a / 2.0
Python a // b a / b

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

Для положительных чисел % ведёт себя одинаково.

Отличие появляется с отрицательными:

Java и C++ делят «к нулю», поэтому остаток имеет знак делимого. Python делает // как деление «вниз», поэтому % согласован с //.

Пример:

Java: -7 / 3-2, -7 % 3-1. C++: -7 / 3-2, -7 % 3-1. Python: -7 // 3-3, -7 % 32.

Где чаще всего ошибаются

В Java/C++ ожидают дробь от a / b, но получают целую часть. В выражении перемешивают типы и теряют дробную часть: int avg = (a + b) / 2;. В Java не замечают переполнение int. В C++ рассчитывают на поведение при переполнении – так делать нельзя. В Python используют // и не учитывают, что с отрицательными оно работает «вниз».