整數

整數 在 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$。

Length Unsigned Signed
8-bit u8 i8
16-bit u16 i16
32-bit u32 i32
64-bit u64 i64
128-bit u128 i128
256-bit u256 ------

還有一種特殊的整數型別叫做usize,目前它只是u32的別名。未來當 Cairo 可以編譯成 MLIR(Multi-Level Intermediate Representation)時,這個型別可能會扮演更獨特的角色。

Integer Literals in Cairo

你可以用下表所示的任何一種形式來撰寫整數常值。請注意,若某個數字常值可以屬於多種數值型別,可以在後面加上型別後綴,例如57_u8,用來指定型別。數字常值也可以使用視覺分隔符號_,讓程式碼更容易閱讀。

Numeric Literals Example
Decimal 98222
Hex 0xff
Octal 0o04321
Binary 0b01

那麼,你該怎麼知道要用哪一種整數型別呢?試著估算你的整數可能達到的最大值,再選擇適合的大小。你會用到usize的主要情境,是對某種集合進行索引的時候。

數值運算

Cairo 支援所有整數型別都適用的基本數學運算:加法、減法、乘法、除法和取餘數。整數除法會朝零的方向截斷,取最接近的整數。以下程式碼示範如何在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 個練習,就能練習 整數