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
位元邏輯 AND。
val logor : nativeint -> nativeint -> nativeint
位元邏輯 OR。
val logxor : nativeint -> nativeint -> nativeint
位元邏輯互斥 OR。
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
。