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
整数除法。该除法将它的参数的实数商四舍五入到零,如 (/)
中所指定。
Division_by_zero
。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 x
是 x
的绝对值。在 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 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
相同,但将参数解释为无符号整数。如果参数的无符号值不能容纳在 int
中,则返回 None
。
val of_float : float -> nativeint
将给定的浮点数转换为原生整数,丢弃小数部分(向 0 截断)。如果截断后的浮点数超出了范围 [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
。
nativeint
中可表示的整数范围,则引发 Failure
。val of_string_opt : string -> nativeint option
与 of_string
相同,但返回 None
而不是引发异常。
val to_string : nativeint -> string
以十进制返回其参数的字符串表示形式。
typet =
nativeint
原生整数类型的别名。
val compare : t -> t -> int
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
。