Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Enteros

Clases enteras

tiene cuatro clases de enteros firmados y cuatro sin signo.MATLAB® Los tipos firmados permiten trabajar con enteros negativos, así como positivos, pero no pueden representar un rango de números tan amplio como los tipos sin signo porque se utiliza un bit para designar un signo positivo o negativo para el número. Los tipos sin signo proporcionan un rango más amplio de números, pero estos números solo pueden ser cero o positivos.

admite almacenamiento de 1, 2, 4 y 8 bytes para datos enteros.MATLAB Puede ahorrar memoria y tiempo de ejecución para los programas si utiliza el tipo entero más pequeño que aloja los datos. Por ejemplo, no necesita un entero de 32 bits para almacenar el valor.100

Aquí están las ocho clases de enteros, el rango de valores que puede almacenar con cada tipo y la función de conversión necesaria para crear ese tipo:MATLAB

Clase

Rango de valores

Función de conversión

Entero de 8 bits con signo

-27 a 27-1

int8

Entero de 16 bits con signo

-215 a 215-1

int16

Entero de 32 bits firmado

-231 a 231-1

int32

Entero de 64 bits firmado

-263 a 263-1

int64

Entero de 8 bits sin signo

0 a 28-1

uint8

Entero de 16 bits sin signo

0 a 216-1

uint16

Entero de 32 bits sin signo

0 a 232-1

uint32

Entero de 64 bits sin signo

0 a 264-1

uint64

Creación de datos enteros

almacena datos numéricos como punto flotante de precisión doble () de forma predeterminada.MATLABdouble Para almacenar datos como un entero, debe convertir el tipo entero deseado.double Utilice una de las funciones de conversión mostradas en la tabla anterior.

Por ejemplo, para almacenar como un entero de 16 bits con signo asignado a la variable, escriba325x

x = int16(325); 

Si el número que se está convirtiendo en un entero tiene una parte fraccionaria, redondea al entero más cercano.MATLAB Si la parte fraccionaria es exactamente, entonces de los dos enteros igualmente cercanos, elige aquella para la cual el valor absoluto es mayor en magnitud:0.5MATLAB

x = 325.499; int16(x) ans =     int16     325           x = x + .001; int16(x) ans =    int16     326                                      

Si necesita redondear un número con un esquema de redondeo que no sea el predeterminado, proporciona cuatro funciones de redondeo:,, y.MATLABroundfixfloorceil La función permite anular el valor predeterminado y redondear cuando hay una parte fraccionaria distinta de cero:fixtowards zero

x = 325.9;  int16(fix(x)) ans =    int16     325

Las operaciones aritméticas que implican tanto enteros como de punto flotante siempre dan como resultado un tipo de datos entero. redondea el resultado, cuando sea necesario, según el algoritmo de redondeo predeterminado.MATLAB El ejemplo siguiente produce una respuesta exacta de la cual, a continuación, redondea al entero más alto siguiente:1426.75MATLAB

int16(325) * 4.39 ans =    int16     1427

Las funciones de conversión de enteros también son útiles al convertir otras clases, como cadenas, en números enteros:

str = 'Hello World';  int8(str) ans =    1×11 int8 row vector      72   101   108   108   111    32    87   111   114   108   100

Si convierte un valor en una clase de enteros, el resultado es un valor de esa clase de enteros.NaN0 Por ejemplo,

int32(NaN) ans =    int32     0

Operaciones aritméticas en clases enteras

puede realizar aritmética de enteros en los siguientes tipos de datos:MATLAB

  • Enteros o matrices de enteros del mismo tipo de datos entero. Esto produce un resultado que tiene el mismo tipo de datos que los operandos:

    x = uint32([132 347 528]) .* uint32(75); class(x) ans =    uint32
  • Enteros o matrices de enteros y números escalares de punto flotante de precisión doble. Esto produce un resultado que tiene el mismo tipo de datos que los operandos de enteros:

    x = uint32([132 347 528]) .* 75.49; class(x) ans =    uint32

Para todas las operaciones binarias en las que un operando es una matriz de tipo de datos entero (excepto los enteros de 64 bits) y el otro es un doble escalar, calcula la operación mediante aritmética de doble precisión de elemento y, a continuación, convierte el resultado de nuevo en el original tipo de datos entero.MATLAB Para las operaciones binarias que implican una matriz de enteros de 64 bits y un doble escalar, calcula la operación como si se utilizaron aritmética de precisión extendida de 80 bits, para evitar la pérdida de precisión.MATLAB

Valores más grandes y más pequeños para clases enteras

Para cada tipo de datos entero, hay un número más grande y más pequeño que puede representar con ese tipo. La tabla mostrada en enumera los valores más grandes y más pequeños para cada tipo de datos entero en la columna "rango de valores".Enteros

También puede obtener estos valores con las funciones y:intmaxintmin

intmax('int8')                ans =    int8     127  intmin('int8')    ans =    int8     -128

Si convierte un número que es mayor que el valor máximo de un tipo de datos entero a ese tipo, lo establece en el valor máximo.MATLAB De forma similar, si convierte un número que es menor que el valor mínimo del tipo de datos entero, lo establece en el valor mínimo.MATLAB Por ejemplo,

x = int8(300) x =    int8     127                 x = int8(-300) x =    int8     -128 

Además, cuando el resultado de una operación aritmética que implica enteros excede el valor máximo (o mínimo) del tipo de datos, lo establece en el valor máximo (o mínimo):MATLAB

x = int8(100) * 3 x =    int8     127  x = int8(-100) * 3 x =    int8     -128