En

Enteros en Cairo

1 ejercicio

Acerca de Enteros

Un integer es un número sin parte fraccionaria. En Cairo, la declaración de tipo para los enteros indica el número de bits que el programador puede usar para almacenar el valor.

Los enteros sin signo solo pueden representar números positivos y el número 0 (cero), lo cual puede ser beneficioso en ciertos contextos de programación, como la indexación de arrays y la gestión de memoria.

Cairo también ofrece soporte para enteros con signo, que comienzan con el prefijo i. Estos enteros pueden representar tanto valores positivos como negativos, con tamaños que van desde i8 hasta i128. Cada variante con signo puede almacenar números desde $-2^{n-1}$ hasta $2^{n-1} - 1$ inclusive, donde $n$ es el número de bits que usa esa variante. Por ejemplo, un i8 puede almacenar números desde $-2^7$ hasta $2^7 - 1$, lo que equivale a $-128$ a $127$.

Longitud Sin signo Con signo
8 bits u8 i8
16 bits u16 i16
32 bits u32 i32
64 bits u64 i64
128 bits u128 i128
256 bits u256 ------

También existe un tipo de entero especial llamado usize, que actualmente es solo un alias de u32. Es posible que este tipo desempeñe un papel más distintivo en el futuro, una vez que Cairo pueda compilarse a MLIR (Multi-Level Intermediate Representation).

Literales de enteros en Cairo

Puedes escribir literales de enteros en cualquiera de las formas que se muestran en la siguiente tabla. Ten en cuenta que los literales numéricos que pueden ser de varios tipos numéricos permiten un sufijo de tipo, como 57_u8, para designar el tipo. También es posible usar un separador visual _ en los literales numéricos, con el fin de mejorar la legibilidad del código.

Literales numéricos Ejemplo
Decimal 98222
Hexadecimal 0xff
Octal 0o04321
Binario 0b01

Entonces, ¿cómo sabes qué tipo de entero usar? Intenta estimar el valor máximo que puede tener tu entero y elige el tamaño adecuado. La situación principal en la que usarías usize es al indexar algún tipo de colección.

Operaciones numéricas

Cairo admite las operaciones matemáticas básicas que esperarías para todos los tipos de enteros: suma, resta, multiplicación, división y residuo. La división de enteros trunca hacia cero al entero más cercano. El siguiente código muestra cómo usarías cada operación numérica en una sentencia let:

fn main() {
    // addition
    let sum = 5_u128 + 10_u128;

    // subtraction
    let difference = 95_u128 - 4_u128;

    // multiplication
    let product = 4_u128 * 30_u128;

    // division
    let quotient = 56_u128 / 32_u128; // result is 1
    let quotient = 64_u128 / 32_u128; // result is 2

    // remainder
    let remainder = 43_u128 % 5_u128; // result is 3
}

Cada expresión en estas sentencias usa un operador matemático y evalúa a un solo valor, que luego se vincula a una variable.

La lista de todos los operadores que ofrece Cairo se encuentra en The Cairo Book.

Editar en GitHub El enlace se abre en una ventana o pestaña nueva

Aprende Enteros

La práctica está bloqueada

Desbloquea 2 ejercicios más para practicar Enteros