模块 Targetint

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

val shift_right : t -> int -> t

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

val shift_right_logical : t -> int -> t

Targetint.shift_right_logical x yx 右移 y 位。这是一个逻辑移位:无论 x 的符号如何,零都插入到空出的位中。如果 y < 0y >= 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_intTargetint.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

将给定的字符串转换为目标整数。字符串以十进制(默认)或十六进制、八进制或二进制读取,如果字符串以 0x0o0b 开头。如果给定的字符串不是整数的有效表示形式,或者表示的整数超过类型 nativeint 中可表示的整数范围,则引发 Failure "int_of_string"

val to_string : t -> string

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

val compare : t -> t -> int

目标整数的比较函数,与 Stdlib.compare 的规范相同。连同类型 t 一起,此函数 compare 允许将模块 Targetint 作为参数传递给函子 Set.MakeMap.Make

val unsigned_compare : t -> t -> int

Targetint.compare 相同,但参数被解释为无符号整数。

val equal : t -> t -> bool

目标整数的相等函数。

type repr = 
| Int32 of int32
| Int64 of int64
val repr : t -> repr

原生整数的具体表示。

val print : Format.formatter -> t -> unit

将目标整数打印到格式化程序。