module Int32:sig
..end
32 位整数。
此模块提供对类型 int32
(有符号 32 位整数)的操作。与内置 int
类型不同,类型 int32
保证在所有平台上正好是 32 位宽。所有对 int32
的算术运算都以 232 为模进行。
性能提示:类型 int32
的值比类型 int
的值占用更多内存空间,并且对 int32
的算术运算通常比对 int
的算术运算慢。仅当应用程序需要精确的 32 位算术时才使用 int32
。
32 位整数的字面量以 l 为后缀
let zero: int32 = 0l
let one: int32 = 1l
let m_one: int32 = -1l
val zero : int32
32 位整数 0。
val one : int32
32 位整数 1。
val minus_one : int32
32 位整数 -1。
val neg : int32 -> int32
一元否定。
val add : int32 -> int32 -> int32
加法。
val sub : int32 -> int32 -> int32
减法。
val mul : int32 -> int32 -> int32
乘法。
val div : int32 -> int32 -> int32
整数除法。此除法将其实参的真实商舍入为零,如 (/)
所指定。
Division_by_zero
如果第二个实参为零。val unsigned_div : int32 -> int32 -> int32
与 Int32.div
相同,只是实参和结果被解释为无符号 32 位整数。
val rem : int32 -> int32 -> int32
整数余数。如果 y
不为零,则 Int32.rem x y
的结果满足以下属性:x = Int32.add (Int32.mul (Int32.div x y) y) (Int32.rem x y)
。如果 y = 0
,则 Int32.rem x y
抛出 Division_by_zero
。
val unsigned_rem : int32 -> int32 -> int32
与 Int32.rem
相同,只是实参和结果被解释为无符号 32 位整数。
val succ : int32 -> int32
后继。 Int32.succ x
是 Int32.add x Int32.one
。
val pred : int32 -> int32
前驱。 Int32.pred x
是 Int32.sub x Int32.one
。
val abs : int32 -> int32
abs x
是 x
的绝对值。对于 min_int
,它本身就是 min_int
,因此仍然为负数。
val max_int : int32
可表示的最大 32 位整数,231 - 1。
val min_int : int32
可表示的最小 32 位整数,-231。
val logand : int32 -> int32 -> int32
按位逻辑与。
val logor : int32 -> int32 -> int32
按位逻辑或。
val logxor : int32 -> int32 -> int32
按位逻辑异或。
val lognot : int32 -> int32
按位逻辑非。
val shift_left : int32 -> int -> int32
Int32.shift_left x y
将 x
左移 y
位。如果 y < 0
或 y >= 32
,则结果未定义。
val shift_right : int32 -> int -> int32
Int32.shift_right x y
将 x
右移 y
位。这是一个算术移位:x
的符号位被复制并插入到空位中。如果 y < 0
或 y >= 32
,则结果未定义。
val shift_right_logical : int32 -> int -> int32
Int32.shift_right_logical x y
将 x
右移 y
位。这是一个逻辑移位:无论 x
的符号如何,零都被插入到空位中。如果 y < 0
或 y >= 32
,则结果未定义。
val of_int : int -> int32
将给定的整数(类型 int
)转换为 32 位整数(类型 int32
)。在 64 位平台上,实参以 232 为模。
val to_int : int32 -> int
将给定的 32 位整数(类型 int32
)转换为整数(类型 int
)。在 32 位平台上,32 位整数以 231 为模,即在转换过程中会丢失高位。在 64 位平台上,转换是精确的。
val unsigned_to_int : int32 -> int option
与 Int32.to_int
相同,但将实参解释为无符号整数。如果实参的无符号值无法放入 int
中,则返回 None
。
val of_float : float -> int32
将给定的浮点数转换为 32 位整数,丢弃小数部分(向 0 舍入)。如果截断的浮点数超出了范围 [Int32.min_int
, Int32.max_int
],则不会抛出异常,并且将返回一个未指定的、平台相关的整数。
val to_float : int32 -> float
将给定的 32 位整数转换为浮点数。
val of_string : string -> int32
将给定的字符串转换为 32 位整数。字符串以十进制读取(默认情况下,或如果字符串以 0u
开头)或以十六进制、八进制或二进制读取,如果字符串以 0x
、0o
或 0b
开头。
前缀 0u
将输入读取为范围 [0, 2*Int32.max_int+1]
内的无符号整数。如果输入超过 Int32.max_int
,它将被转换为有符号整数 Int32.min_int + input - Int32.max_int - 1
。
下划线(_)字符可以出现在字符串中的任何位置,并且会被忽略。
Failure
如果给定的字符串不是整数的有效表示,或者如果表示的整数超出类型 int32
中可表示的整数范围。val of_string_opt : string -> int32 option
与 of_string
相同,但返回 None
而不是抛出。
val to_string : int32 -> string
返回其实参的有符号十进制字符串表示形式。
val bits_of_float : float -> int32
返回给定浮点数的内部表示形式,根据 IEEE 754 浮点“单精度格式”位布局。结果的第 31 位表示浮点数的符号;第 30 到 23 位表示(有偏)指数;第 22 到 0 位表示尾数。
val float_of_bits : int32 -> float
返回内部表示形式(根据 IEEE 754 浮点“单精度格式”位布局)为给定 int32
的浮点数。
typet =
int32
类型为 32 位整数的别名。
val compare : t -> t -> int
val unsigned_compare : t -> t -> int
与 Int32.compare
相同,只是实参被解释为无符号 32 位整数。
val equal : t -> t -> bool
int32 的等式函数。
val min : t -> t -> t
返回两个实参中较小的一个。
val max : t -> t -> t
返回两个实参中较大的一个。
val seeded_hash : int -> t -> int
32 位整数的带种子哈希函数,其输出值与 Hashtbl.seeded_hash
相同。此函数允许将此模块作为实参传递给函子 Hashtbl.MakeSeeded
。
val hash : t -> int
32 位整数的无种子哈希函数,其输出值与 Hashtbl.hash
相同。此函数允许将此模块作为实参传递给函子 Hashtbl.Make
。