module Int32:sig
..end
32 位元整數。
此模組提供對有號 32 位元整數類型 int32
的操作。與內建的 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
位元邏輯 AND。
val logor : int32 -> int32 -> int32
位元邏輯 OR。
val logxor : int32 -> int32 -> int32
位元邏輯互斥 OR。
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
。
_
(底線)字元可以出現在字串中的任何位置,並且會被忽略。
int32
類型中可表示的整數範圍,則引發 Failure
例外。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
的引數傳遞。