MATLAB Function Reference  int8, int16, int32, int64

Convert to signed integer

Syntax

• ```I = int8(X)
I = int16(X)
I = int32(X)
I = int64(X)
```

Description

```I = int*(X) ``` converts the elements of array `X` into signed integers. `X` can be any numeric object (such as a `double`). The results of an `int*` operation are shown in the next table.

 Operation Output Range Output Type Bytes per Element Output Class `int8` -128 to 127 Signed 8-bit integer 1 `int8` `int16` -32,768 to 32,767 Signed 16-bit integer 2 `int16` `int32` -2,147,483,648 to 2,147,483,647 Signed 32-bit integer 4 `int32` `int64` -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 Signed 64-bit integer 8 `int64`

`double` and `single` values are rounded to the nearest `int*` value on conversion. A value of `X` that is above or below the range for an integer class is mapped to one of the endpoints of the range. For example,

• ```int16(40000)
ans =
32767
```

If `X` is already a signed integer of the same class, then `int*` has no effect.

You can define or overload your own methods for `int*` (as you can for any object) by placing the appropriately named method in an `@int*` directory within a directory on your path. Type `help datatypes` for the names of the methods you can overload.

Remarks

Most operations that manipulate arrays without changing their elements are defined for integer values. Examples are `reshape`, `size`, the logical and relational operators, subscripted assignment, and subscripted reference.

Some arithmetic operations are defined for integer arrays on interaction with other integer arrays of the same class (e.g., where both operands are `int16`). Examples of these operations are `+`, `-`, `.*`, `./`, `.\` and `.^`. If at least one operand is scalar, then `*`, `/`, `\`, and `^` are also defined. Integer arrays may also interact with scalar `double` variables, including constants, and the result of the operation is an integer array of the same class. Integer arrays saturate on overflow in arithmetic.

A particularly efficient way to initialize a large array is by specifying the data type (i.e., class name) for the array in the `zeros`, `ones`, or `eye` function. For example, to create a 100-by-100 `int64` array initialized to zero, type

• ```I = zeros(100, 100, 'int64');
```

An easy way to find the range for any MATLAB integer type is to use the `intmin` and `intmax` functions as shown here for `int32`:

• ```intmin('int32')               intmax('int32')
ans =                         ans =
-2147483648                   2147483647
```

See Also

`double`, `single`, `uint8`, `uint16`, `uint32`, `uint64`, `intmax`, `intmin`

© 1994-2005 The MathWorks, Inc.