整数

整数 の Cairo

1個の演習

整数について

integerは、小数部分を持たない数値です。 Cairoでは、整数の型宣言は、その値を格納するためにプログラマーが使えるビット数を示します。

符号なし整数は、正の数と0(ゼロ)だけを表せます。これは、配列のインデックスやメモリ管理など、特定のプログラミングの場面で役立ちます。

Cairoは、iという接頭辞で始まる符号付き整数もサポートしています。 これらの整数は正の値と負の値の両方を表せ、サイズはi8からi128まであります。 それぞれの符号付きの型は、$-2^{n-1}$から$2^{n-1} - 1$までの数値を格納できます(両端を含む)。ここで$n$は、その型が使うビット数です。 たとえば、i8は$-2^7$から$2^7 - 1$までの数値、つまり$-128$から$127$を格納できます。

長さ 符号なし 符号付き
8ビット u8 i8
16ビット u16 i16
32ビット u32 i32
64ビット u64 i64
128ビット u128 i128
256ビット u256 ------

usizeという特別な整数型もあります。これは現在のところ、単にu32の別名です。 この型は、CairoをMLIR(Multi-Level Intermediate Representation)にコンパイルできるようになれば、将来より独自の役割を担うかもしれません。

Cairoの整数リテラル

整数リテラルは、以下の表に示すいずれの形式でも書けます。 複数の数値型になりうる数値リテラルでは、57_u8のように型接尾辞を付けて型を指定できることに注意してください。 また、コードを読みやすくするために、数値リテラルに視覚的な区切り_を使うこともできます。

数値リテラル 例
10進数 98222
16進数 0xff
8進数 0o04321
2進数 0b01

では、どの整数型を使えばよいのでしょうか? 自分の整数が取りうる最大値を見積もって、適切なサイズを選びましょう。 usizeを使う主な場面は、何らかのコレクションのインデックスを扱うときです。

数値演算

Cairoは、すべての整数型で期待される基本的な算術演算、つまり足し算、引き算、掛け算、割り算、余りをサポートしています。 整数の割り算は、0に向かって最も近い整数に切り捨てられます。 次のコードは、それぞれの数値演算を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
}

これらの文の各式は数学演算子を使い、単一の値に評価され、その値が変数に束縛されます。

Cairoが提供するすべての演算子の一覧は、The Cairo Bookにあります。

GitHubで編集 リンクは新しいウィンドウまたはタブで開きます

整数を学習する

練習はロックされています

整数を練習するには、あと2個の演習のロックを解除してください