module Nativeint:プロセッサネイティブな整数sig
..end
このモジュールは nativeint
型の符号付き 32 ビット整数(32 ビットプラットフォームの場合)または符号付き 64 ビット整数(64 ビットプラットフォームの場合)の演算を提供します。
この整数型は C コンパイラの long
整数型とちょうど同じ幅になります。
nativeint
型上の算術演算はすべて、プロセッサの語長に応じて 232 ないしは 264 を法とした剰余を取ります。
性能についての注意: nativeint
型の値は int
型の値よりもメモリ空間を多く消費し、一般に算術演算もより低速です。
アプリケーションで int
型よりも高い精度が必要な場合にだけ
nativeint
型を使うようにしてください。
val zero : nativeint
val one : nativeint
val minus_one : nativeint
val neg : nativeint -> nativeint
val add : nativeint -> nativeint -> nativeint
val sub : nativeint -> nativeint -> nativeint
val mul : nativeint -> nativeint -> nativeint
val div : nativeint -> nativeint -> nativeint
val rem : nativeint -> nativeint -> nativeint
y
が 0 でないとき、 Nativeint.rem x y
は次の性質を満たします。
すなわち、 x = Nativeint.add (Nativeint.mul (Nativeint.div x y) y) (Nativeint.rem x y)
になります。
y = 0
の場合は Division_by_zero
例外が発生します。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
val size : int
32
、 64 ビットプラットフォームでは 64
になります。val max_int : nativeint
val min_int : nativeint
val logand : nativeint -> nativeint -> nativeint
val logor : nativeint -> nativeint -> nativeint
val logxor : nativeint -> nativeint -> nativeint
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
の符号によらず空いたビットを 0 で埋めます。
y < 0
と y >= bitsize
のときの結果は規定されていません。val of_int : int -> nativeint
int
型の)整数をネイティブ整数に変換します。val to_int : nativeint -> int
nativeint
型の)ネイティブ整数を(int
型の)整数に変換します。
上位ビットは変換により失われます。val of_float : float -> nativeint
Nativeint.min_int
, Nativeint.max_int
] の範囲外だった場合の結果は未定義です。val to_float : nativeint -> float
val of_int32 : int32 -> nativeint
int32
型の) 32 ビット整数をネイティブ整数に変換します。val to_int32 : nativeint -> int32
int32
型の) 32 ビット整数に変換します。
64 ビットプラットフォームでは、引数のネイティブ整数の 232 を法とした剰余を取ります。
すなわち、上位 32 ビットが失われます。
32 ビットプラットフォームでは、変換は正確に行なわれます。val of_string : string -> nativeint
0x
、 0o
、 0b
で始まっていた場合には順に十六進、八進、二進で読み込まれます。
与えられた文字列が整数の表現として妥当でない場合や、 nativeint
で表せる範囲を越えていた場合には Failure "int_of_string"
例外が発生します。val to_string : nativeint -> string
typet =
nativeint
val compare : t -> t -> int