Rustで2進数、8進数、16進数、複素数を扱う方法

2021-11-25

はじめに

Rustを初めて数日が経ちました。 今日は何をしてもダメな日ですが、タイトルのことを勧めていきましょう。

進数表記と、複素数を並べるのはナンセンスな気もどことなくしますが、良いでしょう。 やっていきましょう。

進数表記を取り扱う

Rustで進数を取り扱い場合、0bとかつければいいです。 表示するときには、println!の{}の中に色々詰め込めばいいです。

fn main() {
    let binaly = 0b10;
    let octal = 0o36;
    let hex = 0x14;

    println!("10進数 {},{},{}", binaly, octal, hex);
    println!("16進数 {:x},{:x},{:x}", binaly, octal, hex);
    println!("8進数 {:o},{:o},{:o}", binaly, octal, hex);
    println!("2進数 {:b},{:b},{:b}", binaly, octal, hex);
}

実行結果

こんな感じです。

cargo run
   Compiling hello-learn v0.1.0 (E:\SourceCode\Rust\hello-learn)
    Finished dev [unoptimized + debuginfo] target(s) in 0.70s
     Running `target\debug\hello-learn.exe`
10進数 2,30,20
16進数 2,1e,14      
8進数 2,36,24       
2進数 10,11110,10100

複素数

Cargo.toml

Cargo.tomlの中にこのように追加します。

[dependencies]
num-complex = "0.4"

Cargo runで実行すると、自動でDLできるのが良いですね。

Complex

fn main() {
    let a = num_complex::Complex { re: 2.1, im: -1.2 };
    let b = num_complex::Complex::new(11.1, 22.2);
    let result = a + b;

    println!("{} + {}i", result.re, result.im);
}

実行結果

こんな感じ。

cargo run
   Compiling hello-learn v0.1.0 (E:\SourceCode\Rust\hello-learn)
    Finished dev [unoptimized + debuginfo] target(s) in 0.70s
     Running `target\debug\hello-learn.exe`
13.2 + 21i

まとめ

今日は何も思いつかない。 ほんと何も出てこない。