Модуль Int
module Int: sig .. end
Целочисленные значения.
Целые числа имеют ширину Sys.int_size бит и представлены в дополнительном коде. Все операции выполняются по модулю 2Sys.int_size. Переполнение не приводит к ошибке.
- Начиная с версии 4.08
Целые числа
type t = int
Тип целочисленных значений.
val zero : int
zero — целое число 0.
val one : int
one — целое число 1.
val minus_one : int
minus_one — целое число -1.
val neg : int -> int
neg x — ~-x.
val add : int -> int -> int
add x y — сложение x + y.
val sub : int -> int -> int
sub x y — вычитание x - y.
val mul : int -> int -> int
mul x y — умножение x * y.
val div : int -> int -> int
Деление с округлением. div x y — частное x / y, округлённое к нулю до целого числа. Подробности см. в описании (/).
-
Вызывает исключение
Division_by_zero, если второй аргумент равен 0.
val rem : int -> int -> int
rem x y — остаток от деления с округлением div x y. Выполняется rem x y = x - div x y * y. Подробности см. в описании (mod).
-
Вызывает исключение
Division_by_zero, если второй аргумент равен 0.
val fdiv : int -> int -> int
Деление с округлением вниз. fdiv x y — частное x / y, округлённое вниз до целого числа. Выполняются условия fdiv x y <= div x y <= cdiv x y и cdiv x y - fdiv x y <= 1.
- Начиная с версии 5.5
-
Вызывает исключение
Division_by_zero, если второй аргумент равен 0.
val cdiv : int -> int -> int
Деление с округлением вверх. cdiv x y — частное x / y, округлённое вверх до целого числа. Выполняются условия fdiv x y <= div x y <= cdiv x y и cdiv x y - fdiv x y <= 1.
- Начиная с версии 5.5
-
Вызывает исключение
Division_by_zero, если второй аргумент равен 0.
val ediv : int -> int -> int
Евклидово деление. ediv x y — частное x / y, округлённое вниз до целого числа, если y > 0, и округлённое вверх до целого числа, если y < 0. Остаток erem x y = x - ediv x y * y всегда неотрицателен. Кроме того, ediv x (-y) = - ediv x y.
- Начиная с версии 5.5
-
Вызывает исключение
Division_by_zero, если второй аргумент равен 0.
val erem : int -> int -> int
Евклидов остаток. Если y не равен нулю, выполняются условия x = ediv x y * y + erem x y и 0 <= erem x y <= abs y - 1. Результат erem x y всегда неотрицателен, в отличие от результата rem x y, знак которого совпадает со знаком x.
- Начиная с версии 5.5
-
Вызывает исключение
Division_by_zero, если второй аргумент равен 0.
val succ : int -> int
succ x — add x 1.
val pred : int -> int
pred x — sub x 1.
val abs : int -> int
abs x — абсолютное значение x. То есть x, если x положительно, и neg x, если x отрицательно. Предупреждение. Результат может быть отрицательным, если аргумент равен Int.min_int.
val max_int : int
max_int — наибольшее представимое целое число, 2Sys.int_size - 1-1.
val min_int : int
min_int — наименьшее представимое целое число, -2Sys.int_size - 1.
val logand : int -> int -> int
logand x y — побитовое логическое И для x и y.
val logor : int -> int -> int
logor x y — побитовое логическое ИЛИ для x и y.
val logxor : int -> int -> int
logxor x y — побитовое логическое исключающее ИЛИ для x и y.
val lognot : int -> int
lognot x — побитовое логическое отрицание x.
val shift_left : int -> int -> int
shift_left x n сдвигает x влево на n бит. Результат не определён, если n < 0 или n > Sys.int_size.
val shift_right : int -> int -> int
shift_right x n сдвигает x вправо на n бит. Это арифметический сдвиг: знаковый бит x копируется и вставляется в освободившиеся биты. Результат не определён, если n < 0 или n > Sys.int_size.
val shift_right_logical : int -> int -> int
shift_right_logical x n сдвигает x вправо на n бит. Это логический сдвиг: в освободившиеся биты вставляются нули независимо от знака x. Результат не определён, если n < 0 или n > Sys.int_size.
Предикаты и сравнения
val equal : int -> int -> bool
equal x y — true тогда и только тогда, когда x = y.
val compare : int -> int -> int
compare x y — это compare x y, но более эффективный.
val min : int -> int -> int
Возвращает меньшее из двух аргументов.
- Начиная с версии 4.13
val max : int -> int -> int
Возвращает большее из двух аргументов.
- Начиная с версии 4.13
Подсчёт битов
val popcount : t -> int
Подсчёт единичных битов, также известный как вес Хэмминга. popcount n — количество единичных битов в двоичном представлении n. Отрицательные n представлены в дополнительном коде.
- Начиная с версии 5.5
val unsigned_bitsize : t -> int
unsigned_bitsize n — минимальное количество битов, необходимое для представления n в виде беззнакового двоичного числа. Это наименьшее целое число i между 0 и Sys.int_size включительно, для которого выполняется 0 <= n < 2{^i} (беззнаковое).
- Начиная с версии 5.5
val signed_bitsize : t -> int
signed_bitsize n — минимальное количество битов, необходимое для представления n в виде знакового двоичного числа в дополнительном коде. Это наименьшее целое число i между 1 и Sys.int_size включительно, для которого выполняется -2{^i-1} <= n < 2{^i-1} (знаковое).
- Начиная с версии 5.5
val leading_zeros : t -> int
leading_zeros n — количество ведущих (старших) нулевых битов в двоичном представлении n. Это целое число от 0 до Sys.int_size включительно. Если n отрицательно, leading_zeros n = 0, поскольку старший бит n равен 1. leading_zeros n = {!Sys.int_size} тогда и только тогда, когда n = zero. Обратите внимание, что leading_zeros n + unsigned_bitsize n = {!Sys.int_size}.
- Начиная с версии 5.5
val leading_sign_bits : t -> int
leading_sign_bits n — количество ведущих (старших) знаковых битов в двоичном представлении n, не считая самого знакового бита. Это целое число от 0 до {!Sys.int_size} - 1 включительно. Для положительных n оно равно количеству ведущих нулевых битов минус один. Для отрицательных n оно равно количеству ведущих единичных битов минус один. Обратите внимание, что leading_sign_bits n + signed_bitsize n = {!Sys.int_size}.
- Начиная с версии 5.5
val trailing_zeros : t -> int
trailing_zeros n — количество конечных (младших) нулевых битов в двоичном представлении n. Это целое число от 0 до Sys.int_size включительно. Это наибольшее целое число i <= {!Sys.int_size}, для которого 2{^i} делит n без остатка. Например, trailing_zeros n = 0 тогда и только тогда, когда n нечётно, а trailing_zeros n = {!Sys.int_size} тогда и только тогда, когда n = zero.
- Начиная с версии 5.5
Преобразование
val to_float : int -> float
to_float x — x в виде числа с плавающей точкой.
val of_float : float -> int
of_float x усекает x до целого числа. Результат не определён, если аргумент равен nan или выходит за диапазон представимых целых чисел.
val to_string : int -> string
to_string x — строковое представление x в десятичной системе счисления.
val seeded_hash : int -> int -> int
Хеш-функция с начальным значением для целых чисел, возвращающая то же значение, что и Hashtbl.seeded_hash. Эта функция позволяет передавать данный модуль в качестве аргумента функтору Hashtbl.MakeSeeded.
- Начиная с версии 5.1
val hash : int -> int
Хеш-функция без начального значения для целых чисел, возвращающая то же значение, что и Hashtbl.hash. Эта функция позволяет передавать данный модуль в качестве аргумента функтору Hashtbl.Make.
- Начиная с версии 5.1
© 1995-2026 INRIA.
https://ocaml.org/manual/5.5/api/Int.html