Module CCNativeint
Nativeint
Helpers for processor-native integers
This module provides operations on the type nativeint
of signed 32-bit integers (on 32-bit platforms) or signed 64-bit integers (on 64-bit platforms). This integer type has exactly the same width as that of a pointer type in the C compiler. All arithmetic operations over nativeint are taken modulo 232 or 264 depending on the word size of the architecture.
Performance notice: values of type nativeint
occupy more memory space than values of type int
, and arithmetic operations on nativeint
are generally slower than those on int
. Use nativeint
only when the application requires the extra bit of precision over the int
type.
- since
- 2.1
include module type of sig ... end
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 unsigned_rem : nativeint -> nativeint -> nativeint
val succ : nativeint -> nativeint
val pred : nativeint -> nativeint
val abs : nativeint -> nativeint
val size : int
val max_int : nativeint
val min_int : nativeint
val logand : nativeint -> nativeint -> nativeint
val logor : nativeint -> nativeint -> nativeint
val logxor : nativeint -> nativeint -> nativeint
val shift_left : nativeint -> int -> nativeint
val shift_right : nativeint -> int -> nativeint
val shift_right_logical : nativeint -> int -> nativeint
val of_int : int -> nativeint
val to_int : nativeint -> int
val (/) : t -> t -> t
Integer division. Raise
Division_by_zero
if the second argument is zero. This division rounds the real quotient of its arguments towards zero, as specified forPervasives
.(/).
val (mod) : t -> t -> t
x mod y
is the integer remainder. Ify <> zero
, the result ofx mod y
satisfies the following properties:zero <= x mod y < abs y
andx = ((x / y) * y) + (x mod y)
. Ify = 0
,x mod y
raisesDivision_by_zero
.
val (lsl) : t -> int -> t
x lsl y
shiftsx
to the left byy
bits. The result is unspecified ify < 0
ory >= bitsize
, wherebitsize
is32
on a 32-bit platform and64
on a 64-bit platform.
val (lsr) : t -> int -> t
x lsr y
shiftsx
to the right byy
bits. This is a logical shift: zeroes are inserted in the vacated bits regardless of the sign ofx
. The result is unspecified ify < 0
ory >= bitsize
.
val (asr) : t -> int -> t
x asr y
shiftsx
to the right byy
bits. This is an arithmetic shift: the sign bit ofx
is replicated and inserted in the vacated bits. The result is unspecified ify < 0
ory >= bitsize
.
module Infix : sig ... end
val hash : t -> int
Like
Pervasives
.abs (to_int x).
Conversion
val to_int : t -> int
Convert the given native integer (type
nativeint
) to an integer (typeint
). The high-order bit is lost during the conversion.
val of_int : int -> t
Alias to
Nativeint
.of_int. Convert the given integer (typeint
) to a native integer (typenativeint
).
val to_float : t -> float
Convert the given native integer to a floating-point number.
val of_float : float -> t
Alias to
Nativeint
.of_float. Convert the given floating-point number to a native integer, discarding the fractional part (truncate towards 0). The result of the conversion is undefined if, after truncation, the number is outside the range [CCNativeint.min_int
,CCNativeint.max_int
].
val to_string : t -> string
Return the string representation of its argument, in decimal.
val of_string_exn : string -> t
Alias to
Nativeint
.of_string. Convert the given string to a native integer. The string is read in decimal (by default, or if the string begins with0u
) or in hexadecimal, octal or binary if the string begins with0x
,0o
or0b
respectively.The
0u
prefix reads the input as an unsigned integer in the range[0, 2*CCNativeint.max_int+1]
. If the input exceedsCCNativeint.max_int
it is converted to the signed integerCCInt64.min_int + input - CCNativeint.max_int - 1
.Raise
Failure "Nativeint.of_string"
if the given string is not a valid representation of an integer, or if the integer represented exceeds the range of integers representable in typenativeint
.
val of_string : string -> t option
Safe version of
of_string_exn
. Likeof_string_exn
, but returnNone
instead of raising.