問題:
2 つの n 要素配列 A および B に格納されている 2 つの n ビット 2 進整数を加算する問題を考えてみましょう。2 つの整数の合計は、(n + 1) 要素配列 C に 2 進形式で格納する必要があります。問題を述べてください。正式に、2 つの整数を追加するための擬似コードを記述します。
解決:
- C ← [1 ... n + 1] ▹ C はゼロで埋められます。
- for i ← 1 ~ n
- do sum ← A[i] + B[i] + C[i]
- C[i] ← 合計 % 2
- C[i + 1] ← sum / 2 ▹ 整数除算。
- 出力C
質問:
- C[i] は A[i]+B[i] だと思っていましたが、ステップ 3 で sum ← A[i] + B[i] + C[i] を追加するのはなぜですか?
- なぜ % 2 を合計するのか (なぜステップ 4 でモジュロを使用する必要があるのですか?)
- なぜ sum / 2 (ステップ 5 で除算を使用する必要があるのですか?)
上記の解決策を実際の例で説明していただけますか? ありがとう。