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 as`Int`

(see the section of the Haskell report dealing with arithmetic sequences) also hold for the`Prelude.Enum`

instances over the various`Int`

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.