計算機算術

一般的な整数の除算器(1ビットずつ商を求める回復型・非回復型など)が、乗算器より遅くなりやすい理由として正しいものはどれか。

  1. A割り算は掛け算より、計算の結果のビット数が多くなるから
  2. B商の各ビットが前の結果に依存し、並列化しにくいから
  3. C割り算の回路は、浮動小数点でしか作れないから
答えと解説を見る

正解:B. 商の各ビットが前の結果に依存し、並列化しにくいから

掛け算では部分積をすべて同時に作り、ウォレスツリーなどで並列に足せます。一方、筆算の割り算と同じ方式の除算器では、余りから除数を引けるかどうかを調べて商の1ビットを決め、その結果の余りを使って次のビットを決めるため、各ステップが前の結果に依存します。そのため1サイクルに1〜数ビットずつしか進めず、数十サイクルかかることもあります。逆数をニュートン法で求めて掛け算に変える方式もあります。結果のビット数が多いわけではありません。

  • A. 商のビット数は掛け算の結果より多くはなりません。
  • B. 正しい。各ビットが前の結果に依存し、並列化しにくいからです。
  • C. 整数の除算器も作れます。
この分野を解く 分野ページへ

計算機算術のほかの問題

  1. 8ビットの符号付き整数で −8(1111 1000)を算術右シフトで1ビット右にずらした結果はどれか。
  2. C言語で、int型の −7 / 2 と −7 >> 1(算術右シフトの場合)の結果の組み合わせとして正しいものはどれか。
  3. C言語で、32ビットの符号なし整数(unsigned int)の 0 から 1 を引いた結果はどれか。
  4. 符号なしの整数どうしの足し算で、結果が表せる範囲を超えた(桁あふれした)ことを判定する方法として正しいものはどれか。
  5. 浮動小数点数で、隣り合う表せる値どうしの間隔についての説明として正しいものはどれか。