数学の教授として採用されたばかりです。 最初の1週間は順調でしたが、2週目になって、何かがおかしいと感じます。 問題は、学生たちが答えるすべての答えが間違っていることです! 幸いなことに、数学の力で問題の正体がわかりました。学生の答えは_正しい_のですが、すべて2進数(基数2)で書かれているのです! 驚くべきことに、学生たちは週ごとに違う基数を使っていることがわかります。 学生の答えをすばやく確かめられるように、基数を変換するツールを作ることになります。
ある基数で数を表す数字の並びを、同じ数を表す別の基数の数字の並びに変換します。
基数変換は自分で実装してみましょう。 変換を代わりにやってくれるものを使わないでください。
位取り記数法では、基数bの数は、bの累乗の線形結合として捉えることができます。
42という数を_基数10で_表すと、次のようになります。
(4 × 10¹) + (2 × 10⁰)
101010という数を_基数2で_表すと、次のようになります。
(1 × 2⁵) + (0 × 2⁴) + (1 × 2³) + (0 × 2²) + (1 × 2¹) + (0 × 2⁰)
1120という数を_基数3で_表すと、次のようになります。
(1 × 3³) + (1 × 3²) + (2 × 3¹) + (0 × 3⁰)
そうです。上の3つの数は、どれもまったく同じ数です。おめでとうございます!
| レジスタ | 用途 | 型 | 説明 |
|---|---|---|---|
$a0 |
入力 | 整数 | 入力の桁数 |
$a1 |
入力 | 整数 | 入力の桁の基数 |
$a2 |
入力 | 整数 | 出力の桁の基数 |
$a3 |
入力/出力 | アドレス | 上書き可能な、桁を表すワードの配列 |
$v0 |
出力 | 整数 | 出力の桁数(入力が無効なときは-1) |
$t0-9 |
一時 | 任意 | 一時的な保存に使う |
Exercismに登録すれば、70個の演習、そして本物の人間によるメンタリングとともに、MIPS Assemblyを学んでマスターできます。すべて無料です。