模块 Nativeint

module Nativeint: sig .. end

处理器原生整数。

该模块提供对类型 nativeint 的操作,该类型在 32 位平台上表示带符号的 32 位整数,在 64 位平台上表示带符号的 64 位整数。该整数类型与 C 编译器中的指针类型具有相同的宽度。所有针对 nativeint 的算术运算都以 232 或 264 为模,具体取决于体系结构的字长。

性能提示:类型 nativeint 的值占用比类型 int 的值更多的内存空间,并且针对 nativeint 的算术运算通常比针对 int 的算术运算更慢。仅当应用程序需要比 int 类型更高的精度时,才使用 nativeint

原生整数的字面量以 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

整数除法。该除法将它的参数的实数商四舍五入到零,如 (/) 中所指定。

val unsigned_div : nativeint -> nativeint -> nativeint

Nativeint.div 相同,只是参数和结果被解释为无符号原生整数。

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 相同,只是参数和结果被解释为无符号原生整数。

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 xx 的绝对值。在 min_int 上,它本身就是 min_int,因此仍然是负数。

val size : int

原生整数的位大小。在 32 位平台上等于 32,在 64 位平台上等于 64

val max_int : nativeint

最大的可表示原生整数,在 32 位平台上为 231 - 1,在 64 位平台上为 263 - 1。

val min_int : nativeint

最小的可表示原生整数,在 32 位平台上为 -231,在 64 位平台上为 -263

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 yx 左移 y 位。如果 y < 0y >= bitsize,则结果未定义,其中 bitsize 在 32 位平台上为 32,在 64 位平台上为 64

val shift_right : nativeint -> int -> nativeint

Nativeint.shift_right x yx 右移 y 位。这是一个算术移位:x 的符号位被复制并插入到空缺位中。如果 y < 0y >= bitsize,则结果未定义。

val shift_right_logical : nativeint -> int -> nativeint

Nativeint.shift_right_logical x yx 右移 y 位。这是一个逻辑移位:无论 x 的符号如何,零都将插入到空缺位中。如果 y < 0y >= 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 相同,但将参数解释为无符号整数。如果参数的无符号值不能容纳在 int 中,则返回 None

val of_float : float -> nativeint

将给定的浮点数转换为原生整数,丢弃小数部分(向 0 截断)。如果截断后的浮点数超出了范围 [Nativeint.min_intNativeint.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 开头)或以十六进制、八进制或二进制读取,如果字符串分别以 0x0o0b 开头。

0u 前缀将输入读取为范围 [0, 2*Nativeint.max_int+1] 中的无符号整数。如果输入超过 Nativeint.max_int,则将其转换为带符号整数 Int64.min_int + input - Nativeint.max_int - 1

val of_string_opt : string -> nativeint option

of_string 相同,但返回 None 而不是引发异常。

val to_string : nativeint -> string

以十进制返回其参数的字符串表示形式。

type t = nativeint 

原生整数类型的别名。

val compare : t -> t -> int

原生整数的比较函数,与 compare 的规范相同。与类型 t 一样,该函数 compare 允许将模块 Nativeint 作为参数传递给函子 Set.MakeMap.Make

val unsigned_compare : t -> t -> int

Nativeint.compare 相同,只是参数被解释为无符号原生整数。

val equal : t -> t -> bool

原生整数的相等函数。

val min : t -> t -> t

返回两个参数中较小的一个。

val max : t -> t -> t

返回两个参数中较大的一个。

val seeded_hash : int -> t -> int

原生整数的带种子散列函数,输出值与 Hashtbl.seeded_hash 相同。该函数允许将该模块作为参数传递给函子 Hashtbl.MakeSeeded

val hash : t -> int

原生整数的无种子散列函数,输出值与 Hashtbl.hash 相同。该函数允许将该模块作为参数传递给函子 Hashtbl.Make