Enteros
Enteros
Move admite seis tipos de enteros sin signo: u8
, u16
, u32
, u64
, u128
y u256
. Los valores de estos tipos oscilan entre 0 y un máximo que depende del tamaño del tipo.
Tipo | Rango de valores |
Entero de 8 bits sin signo, | 0 a 28 - 1 |
Entero de 16 bits sin signo, | 0 a 216 - 1 |
Entero de 32 bits sin signo, | 0 a 232 - 1 |
Entero de 64 bits sin signo, | 0 a 264 - 1 |
Entero de 128 bits sin signo, | 0 a 2128 - 1 |
Entero de 256 bits sin signo, | 0 a 2256 - 1 |
Literales
Los valores literales para estos tipos se especifican como una secuencia de dígitos (por ejemplo, 112
) o como literales hexadecimales, por ejemplo, 0xFF
. Opcionalmente, el tipo de literal se puede agregar como un sufijo, por ejemplo, 112u8
. Si no se especifica el tipo, el compilador intentará inferir el tipo a partir del contexto donde se utiliza el literal. Si no se puede inferir el tipo, se supone que es u64
. Los literales numéricos se pueden separar mediante guiones bajos para agruparlos y facilitar su lectura. (p. ej. 1_234_5678
, 1_000u128
, 0xAB_CD_12_35
). Si un literal es demasiado grande para su rango de tamaño especificado (o inferido), se informa un error.
Ejemplos
Copiar
Operaciones
Aritmética
Cada uno de estos tipos admite el mismo conjunto de operaciones aritméticas comprobadas. Para todas estas operaciones, ambos argumentos (los operandos del lado izquierdo y derecho) deben ser del mismo tipo. Si necesita operar sobre valores de diferentes tipos, primero deberá realizar una conversión . De manera similar, si espera que el resultado de la operación sea demasiado grande para el tipo de entero, realice una conversión a un tamaño mayor antes de realizar la operación. Todas las operaciones aritméticas se abortan en lugar de comportarse de una manera que los enteros matemáticos no lo harían (por ejemplo, desbordamiento). , subdesbordamiento, división por cero).
Sintaxis | Operación | Aborta si |
| suma | El resultado es demasiado grande para el tipo de número entero |
| sustracción | El resultado es menor que cero. |
| multiplicación | El resultado es demasiado grande para el tipo de número entero |
| división modular | el divisor es |
| división truncada | el divisor es |
Bit a bit
Los tipos de números enteros admiten las siguientes operaciones bit a bit que tratan cada número como una serie de bits individuales, ya sea 0 o 1, en lugar de valores numéricos enteros. Las operaciones bit a bit no se cancelan.
Sintaxis | Operación | Descripción |
| bit a bit y | Realiza un booleano y para cada bit por pares. |
| bit a bit o | Realiza un booleano o para cada bit por pares. |
| xor bit a bit | Realiza una exclusiva booleana o para cada bit por pares |
Cambios de bits
De manera similar a las operaciones bit a bit, cada tipo de entero admite cambios de bits. Pero a diferencia de otras operaciones, el operando del lado derecho (el número de bits a desplazar) siempre debe ser a u8
y no necesita coincidir con el operando del lado izquierdo (el número que está desplazando). Los desplazamientos de bits pueden abortar si el número de bits a desplazar es mayor o igual a , 8
, 16
, 32
, 64
o 128
para 256
, u8
, u16
, u32
y u64
respectivamente .u128u256
Sintaxis | Operación | Aborta si |
| desplazamiento a la izquierda | El número de bits a desplazar es mayor que el tamaño del tipo de número entero |
| cambio a la derecha | El número de bits a desplazar es mayor que el tamaño del tipo de número entero |
Comparaciones
Los tipos de números enteros son los únicos tipos en Move que pueden usar operadores de comparación. Ambos argumentos deben ser del mismo tipo. Si necesita comparar números enteros de diferentes tipos, primero deberá convertir uno de ellos. Las operaciones de comparación no se cancelan.
Sintaxis | Operación |
| menos que |
| mas grande que |
| Menos que o igual a |
| Mayor qué o igual a |
Igualdad
Como todos los tipos drop
en Move, todos los tipos de números enteros admiten las operaciones "igual" y "no igual". Ambos argumentos deben ser del mismo tipo. Si necesita comparar números enteros de diferentes tipos, primero deberá convertir uno de ellos. Las operaciones de igualdad no se cancelan.
Sintaxis | Operación |
| igual |
| no es igual |
Para más detalles ver el apartado de igualdad
Fundición
Los tipos enteros de un tamaño se pueden convertir en tipos enteros de otro tamaño. Los números enteros son los únicos tipos en Move que admiten la conversión. Las conversiones no se truncan. La conversión se cancelará si el resultado es demasiado grande para el tipo especificado
Sintaxis | Operación | Aborta si |
| Convertir una expresión entera |
|
Aquí, el tipo de e
debe ser 8
, 16
, 32
, 64
o y debe ser , , , , oe . 128
Por ejemplo:256Tu8u16u32u64u128u256
(x as u8)
(y as u16)
(873u16 as u32)
(2u8 as u64)
(1 + 3 as u128)
(4/2 + 12345 as u256)
Propiedad
Al igual que con los otros valores escalares integrados en el lenguaje, los valores enteros se pueden copiar implícitamente, lo que significa que se pueden copiar sin una instrucción explícita como copy
.
Last updated