Portability | portable |
---|---|
Stability | experimental |
Maintainer | libraries@haskell.org |
Signed integer types
Signed integer types
A fixed-precision integer type with at least the range [-2^29 .. 2^29-1]
.
The exact range for a given implementation can be determined by using
Prelude.minBound
and Prelude.maxBound
from the Prelude.Bounded
class.
8-bit signed integer type
16-bit signed integer type
32-bit signed integer type
64-bit signed integer type
Notes
- All arithmetic is performed modulo 2^n, where
n
is the number of bits in the type. - For coercing between any two integer types, use
Prelude.fromIntegral
, which is specialized for all the common cases so should be fast enough. Coercing word types (see Data.Word) to and from integer types preserves representation, not sign. - The rules that hold for
Prelude.Enum
instances over a bounded type such asInt
(see the section of the Haskell report dealing with arithmetic sequences) also hold for thePrelude.Enum
instances over the variousInt
types defined here. - Right and left shifts by amounts greater than or equal to the width
of the type result in either zero or -1, depending on the sign of
the value being shifted. This is contrary to the behaviour in C,
which is undefined; a common interpretation is to truncate the shift
count to the width of the type, for example
1 << 32 == 1
in some C implementations.