module Targetint:sig
..end
目标处理器原生整数。
此模块提供对有符号 32 位整数类型(在 32 位目标平台上)或有符号 64 位整数类型(在 64 位目标平台上)的操作。此整数类型的宽度与 C 编译器中指针类型的宽度完全相同。所有算术运算均以 232 或 264 为模,具体取决于目标体系结构的字大小。
警告:此模块不稳定,并且是 compiler-libs 的一部分。
type
t
目标整数的类型。
val zero : t
目标整数 0。
val one : t
目标整数 1。
val minus_one : t
目标整数 -1。
val neg : t -> t
一元取反。
val add : t -> t -> t
加法。
val sub : t -> t -> t
减法。
val mul : t -> t -> t
乘法。
val div : t -> t -> t
整数除法。如果第二个参数为零,则引发 Division_by_zero
。此除法将参数的实数商向零舍入,如 Stdlib.(/)
中所指定。
val unsigned_div : t -> t -> t
与 Targetint.div
相同,但参数和结果被解释为无符号整数。
val rem : t -> t -> t
整数余数。如果 y
不为零,则 Targetint.rem x y
的结果满足以下属性:Targetint.zero <= Nativeint.rem x y < Targetint.abs y
和 x = Targetint.add (Targetint.mul (Targetint.div x y) y)
。如果
(Targetint.rem x y)y = 0
,则 Targetint.rem x y
引发 Division_by_zero
。
val unsigned_rem : t -> t -> t
与 Targetint.rem
相同,但参数和结果被解释为无符号整数。
val succ : t -> t
后继。 Targetint.succ x
等于 Targetint.add x Targetint.one
。
val pred : t -> t
前驱。 Targetint.pred x
等于 Targetint.sub x Targetint.one
。
val abs : t -> t
abs x
是 x
的绝对值。在 min_int
上,它本身就是 min_int
,因此仍然为负。
val size : int
目标原生整数的位数。
val max_int : t
可表示的最大目标整数,在 32 位平台上为 231 - 1,在 64 位平台上为 263 - 1。
val min_int : t
可表示的最小目标整数,在 32 位平台上为 -231,在 64 位平台上为 -263。
val logand : t -> t -> t
按位逻辑与。
val logor : t -> t -> t
按位逻辑或。
val logxor : t -> t -> t
按位逻辑异或。
val lognot : t -> t
按位逻辑非。
val shift_left : t -> int -> t
Targetint.shift_left x y
将 x
左移 y
位。如果 y < 0
或 y >= bitsize
,则结果未定义,其中 bitsize
在 32 位平台上为 32
,在 64 位平台上为 64
。
val shift_right : t -> int -> t
Targetint.shift_right x y
将 x
右移 y
位。这是一个算术移位:x
的符号位被复制并插入到空出的位中。如果 y < 0
或 y >= bitsize
,则结果未定义。
val shift_right_logical : t -> int -> t
Targetint.shift_right_logical x y
将 x
右移 y
位。这是一个逻辑移位:无论 x
的符号如何,零都插入到空出的位中。如果 y < 0
或 y >= bitsize
,则结果未定义。
val of_int : int -> t
将给定的整数(类型 int
)转换为目标整数(类型 t
),以目标字大小为模。
val of_int_exn : int -> t
将给定的整数(类型 int
)转换为目标整数(类型 t
)。如果转换不精确,则引发致命错误。
val to_int : t -> int
将给定的目标整数(类型 t
)转换为整数(类型 int
)。在转换过程中,高位会被丢失。
val of_float : float -> t
将给定的浮点数转换为目标整数,丢弃小数部分(向 0 截断)。如果在截断后,数字超出范围 [Targetint.min_int
,Targetint.max_int
],则转换结果未定义。
val to_float : t -> float
将给定的目标整数转换为浮点数。
val of_int32 : int32 -> t
将给定的 32 位整数(类型 int32
)转换为目标整数。
val to_int32 : t -> int32
将给定的目标整数转换为 32 位整数(类型 int32
)。在 64 位平台上,64 位原生整数以 232 为模,即前 32 位会被丢失。在 32 位平台上,转换是精确的。
val of_int64 : int64 -> t
将给定的 64 位整数(类型 int64
)转换为目标整数。
val to_int64 : t -> int64
将给定的目标整数转换为 64 位整数(类型 int64
)。
val of_string : string -> t
将给定的字符串转换为目标整数。字符串以十进制(默认)或十六进制、八进制或二进制读取,如果字符串以 0x
、0o
或 0b
开头。如果给定的字符串不是整数的有效表示形式,或者表示的整数超过类型 nativeint
中可表示的整数范围,则引发 Failure "int_of_string"
。
val to_string : t -> string
返回其参数的字符串表示形式,以十进制表示。
val compare : t -> t -> int
目标整数的比较函数,与 Stdlib.compare
的规范相同。连同类型 t
一起,此函数 compare
允许将模块 Targetint
作为参数传递给函子 Set.Make
和 Map.Make
。
val unsigned_compare : t -> t -> int
与 Targetint.compare
相同,但参数被解释为无符号整数。
val equal : t -> t -> bool
目标整数的相等函数。
type
repr =
| |
Int32 of |
| |
Int64 of |
val repr : t -> repr
原生整数的具体表示。
val print : Format.formatter -> t -> unit
将目标整数打印到格式化程序。