Spec-Zone.ru › OCaml

Модуль Nativeint

module Nativeint: sig .. end

Целые числа, размер которых соответствует разрядности процессора.

Этот модуль предоставляет операции над типом nativeint знаковых 32-разрядных целых чисел (на 32-разрядных платформах) или знаковых 64-разрядных целых чисел (на 64-разрядных платформах). Размер этого целочисленного типа в точности совпадает с размером типа указателя в компиляторе C. Все арифметические операции над nativeint выполняются по модулю 232 или 264 в зависимости от разрядности архитектуры.

Примечание о производительности: значения типа nativeint занимают больше памяти, чем значения типа int, а арифметические операции над nativeint обычно выполняются медленнее, чем над int. Используйте nativeint только в тех случаях, когда приложению требуется дополнительный бит точности по сравнению с типом int.

Литералы собственных целых чисел имеют суффикс n:

     let zero: nativeint = 0n
     let one: nativeint = 1n
     let m_one: nativeint = -1n
    
val zero : nativeint

Собственное целое число 0.

val one : nativeint

Собственное целое число 1.

val minus_one : nativeint

Собственное целое число -1.

val neg : nativeint -> nativeint

Унарное отрицание.

val add : nativeint -> nativeint -> nativeint

Сложение.

val sub : nativeint -> nativeint -> nativeint

Вычитание.

val mul : nativeint -> nativeint -> nativeint

Умножение.

val div : nativeint -> nativeint -> nativeint

Целочисленное деление. Результат этого деления — частное аргументов, округлённое к нулю, как указано для (/).

  • Вызывает исключение Division_by_zero, если второй аргумент равен нулю.
val unsigned_div : nativeint -> nativeint -> nativeint

То же, что и Nativeint.div, но аргументы и результат рассматриваются как беззнаковые собственные целые числа.

  • Начиная с версии 4.08
val rem : nativeint -> nativeint -> nativeint

Остаток от целочисленного деления. Если y не равно нулю, результат Nativeint.rem x y удовлетворяет следующим свойствам: Nativeint.zero <= Nativeint.rem x y < Nativeint.abs y и x = Nativeint.add (Nativeint.mul (Nativeint.div x y) y)
                      (Nativeint.rem x y)
. Если y = 0, Nativeint.rem x y вызывает исключение Division_by_zero.

val unsigned_rem : nativeint -> nativeint -> nativeint

То же, что и Nativeint.rem, но аргументы и результат рассматриваются как беззнаковые собственные целые числа.

  • Начиная с версии 4.08
val fdiv : nativeint -> nativeint -> nativeint

Деление с округлением вниз. 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 : nativeint -> nativeint -> nativeint

Деление с округлением вверх. 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 : nativeint -> nativeint -> nativeint

Евклидово деление. 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 : nativeint -> nativeint -> nativeint

Евклидов остаток. Если 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 : nativeint -> nativeint

Следующее число. Nativeint.succ x равно Nativeint.add x Nativeint.one.

val pred : nativeint -> nativeint

Предыдущее число. Nativeint.pred x равно Nativeint.sub x Nativeint.one.

val abs : nativeint -> nativeint

abs x — это абсолютное значение x. Для min_int оно равно min_int и поэтому остаётся отрицательным.

val size : int

Размер собственного целого числа в битах. Равен 32 на 32-разрядной платформе и 64 на 64-разрядной платформе.

val max_int : nativeint

Наибольшее представимое собственное целое число: 231 - 1 на 32-разрядной платформе или 263 - 1 на 64-разрядной платформе.

val min_int : nativeint

Наименьшее представимое собственное целое число: -231 на 32-разрядной платформе или -263 на 64-разрядной платформе.

val logand : nativeint -> nativeint -> nativeint

Побитовое логическое И.

val logor : nativeint -> nativeint -> nativeint

Побитовое логическое ИЛИ.

val logxor : nativeint -> nativeint -> nativeint

Побитовое логическое исключающее ИЛИ.

val lognot : nativeint -> nativeint

Побитовое логическое НЕ.

val shift_left : nativeint -> int -> nativeint

Nativeint.shift_left x y сдвигает x влево на y бит. Результат не определён, если y < 0 или y >= bitsize, где bitsize равно 32 на 32-разрядной платформе и 64 на 64-разрядной платформе.

val shift_right : nativeint -> int -> nativeint

Nativeint.shift_right x y сдвигает x вправо на y бит. Это арифметический сдвиг: бит знака x копируется и вставляется в освободившиеся биты. Результат не определён, если y < 0 или y >= bitsize.

val shift_right_logical : nativeint -> int -> nativeint

Nativeint.shift_right_logical x y сдвигает x вправо на y бит. Это логический сдвиг: в освободившиеся биты вставляются нули независимо от знака x. Результат не определён, если y < 0 или y >= bitsize.

val of_int : int -> nativeint

Преобразует заданное целое число (тип int) в собственное целое число (тип nativeint).

val to_int : nativeint -> int

Преобразует заданное собственное целое число (тип nativeint) в целое число (тип int). Старший бит при преобразовании теряется.

val unsigned_to_int : nativeint -> int option

То же, что и Nativeint.to_int, но аргумент интерпретируется как беззнаковое целое число. Возвращает None, если беззнаковое значение аргумента не помещается в int.

  • Начиная с версии 4.08
val of_float : float -> nativeint

Преобразует заданное число с плавающей точкой в собственное целое число, отбрасывая дробную часть (округление к нулю). Если число с плавающей точкой после отбрасывания дробной части выходит за пределы [Nativeint.min_int, Nativeint.max_int], исключение не возбуждается, а возвращается неуказанное целое число, зависящее от платформы.

val to_float : nativeint -> float

Преобразует заданное собственное целое число в число с плавающей точкой.

val of_int32 : int32 -> nativeint

Преобразует заданное 32-разрядное целое число (тип int32) в собственное целое число.

val to_int32 : nativeint -> int32

Преобразует заданное собственное целое число в 32-разрядное целое число (тип int32). На 64-разрядных платформах 64-разрядное собственное целое число берётся по модулю 232, то есть старшие 32 бита теряются. На 32-разрядных платформах преобразование точное.

val of_string : string -> nativeint

Преобразует заданную строку в собственное целое число. Строка интерпретируется как десятичное число (по умолчанию или если она начинается с 0u), либо как шестнадцатеричное, восьмеричное или двоичное число, если она начинается соответственно с 0x, 0o или 0b.

Префикс 0u задаёт чтение входных данных как беззнакового целого числа в диапазоне [0, 2*Nativeint.max_int+1]. Если значение превышает Nativeint.max_int, оно преобразуется в знаковое целое число Int64.min_int + input - Nativeint.max_int - 1.

  • Вызывает исключение Failure, если заданная строка не является допустимым представлением целого числа или если представленное в ней целое число выходит за пределы диапазона значений, представимых типом nativeint.
val of_string_opt : string -> nativeint option

То же, что и of_string, но возвращает None вместо возбуждения исключения.

  • Начиная с версии 4.05
val to_string : nativeint -> string

Возвращает строковое представление аргумента в десятичной системе счисления.

type t = nativeint 

Псевдоним типа собственных целых чисел.

val compare : t -> t -> int

Функция сравнения собственных целых чисел с той же спецификацией, что и у compare. Вместе с типом t эта функция compare позволяет передавать модуль Nativeint в качестве аргумента функторам Set.Make и Map.Make.

val unsigned_compare : t -> t -> int

То же, что и Nativeint.compare, но аргументы интерпретируются как беззнаковые собственные целые числа.

  • Начиная с версии 4.08
val equal : t -> t -> bool

Функция проверки равенства собственных целых чисел.

  • Начиная с версии 4.03
val min : t -> t -> t

Возвращает меньшее из двух аргументов.

  • Начиная с версии 4.13
val max : t -> t -> t

Возвращает большее из двух аргументов.

  • Начиная с версии 4.13
val popcount : t -> int

Подсчёт единичных битов, также известный как вес Хэмминга. popcount n — количество единичных битов в двоичном представлении n. Отрицательные значения n представляются в дополнительном коде.

  • Начиная с версии 5.5
val unsigned_bitsize : t -> int

unsigned_bitsize n — минимальное количество битов, необходимое для представления n в виде беззнакового двоичного числа. Это наименьшее целое число i в диапазоне от 0 до size включительно, для которого выполняется 0 <= n < 2{^i} (беззнаковое).

  • Начиная с версии 5.5
val signed_bitsize : t -> int

signed_bitsize n — минимальное количество битов, необходимое для представления n в виде знакового двоичного числа в дополнительном коде. Это наименьшее целое число i в диапазоне от 1 до size включительно, для которого выполняется -2{^i-1} <= n < 2{^i-1} (знаковое).

  • Начиная с версии 5.5
val leading_zeros : t -> int

leading_zeros n — количество ведущих (старших) нулевых битов в двоичном представлении n. Это целое число в диапазоне от 0 до 64 включительно. Если n отрицательно, leading_zeros n = 0, поскольку старший бит n равен 1. leading_zeros n = size тогда и только тогда, когда n = zero. Обратите внимание, что leading_zeros n + unsigned_bitsize n = size.

  • Начиная с версии 5.5
val leading_sign_bits : t -> int

leading_sign_bits n — количество ведущих (старших) знаковых битов в двоичном представлении n, не считая самого бита знака. Это целое число в диапазоне от 0 до 63 включительно. Для положительных значений n оно равно количеству ведущих нулевых битов минус один. Для отрицательных значений n оно равно количеству ведущих единичных битов минус один. Обратите внимание, что leading_sign_bits n + signed_bitsize n = size.

  • Начиная с версии 5.5
val trailing_zeros : t -> int

trailing_zeros n — количество конечных (младших) нулевых битов в двоичном представлении n. Это целое число в диапазоне от 0 до size включительно. Это наибольшее целое число i <= size, для которого 2{^i} делит n без остатка. Например, trailing_zeros n = 0 тогда и только тогда, когда n нечётно, а trailing_zeros n = size тогда и только тогда, когда n = zero.

  • Начиная с версии 5.5
val seeded_hash : int -> t -> int

Хеш-функция с начальным значением для собственных целых чисел, возвращающая то же значение, что и Hashtbl.seeded_hash. Эта функция позволяет передавать данный модуль в качестве аргумента функтору Hashtbl.MakeSeeded.

  • Начиная с версии 5.1
val hash : t -> int

Хеш-функция без начального значения для собственных целых чисел, возвращающая то же значение, что и Hashtbl.hash. Эта функция позволяет передавать данный модуль в качестве аргумента функтору Hashtbl.Make.

  • Начиная с версии 5.1

© 1995-2026 INRIA.
https://ocaml.org/manual/5.5/api/Nativeint.html

Spec-Zone.ru

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