Spec-Zone.ru › OCaml

Модуль 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API