ITパスポート 2026年 問74
問題文
表計算ソフトを用いて、二つの2進数α, βの和を求める。α, βの桁数は2桁に限定し、2の位、1の位の順に各桁の値がセルB3、セルC3とセルB4、セルC4に入力されている。ワークシートは2進数α=10, β=11の例である。結果は、4の位、2の位、1の位の順にセルA5、セルB5、セルC5に表示したい。セルB2は1の位からの繰り上がりの情報を格納するために用いられ、式IF(C3+C4=2,1,0)が入力されている。セルB5に入力する式はどれか。

選択肢
ア:IF(合計(B2:B4)<2, 合計(B2:B4), IF(合計(B2:B4)=2, 0, 1))(正解)
イ:IF(合計(B2:B4)<2, 合計(B2:B4), IF(合計(B2:B4)=2, 1, 0))
ウ:IF(合計(B2:B4)>2, 合計(B2:B4), IF(合計(B2:B4)=2, 0, 1))
エ:IF(合計(B2:B4)>2, 合計(B2:B4), IF(合計(B2:B4)=2, 1, 0))
🔒 解説は解答すると表示されます
表計算で2桁の2進数α, βの和を求める【ITパスポート 解説】
正解の理由
セルB5には、1の位からの繰り上がり(セルB2)と各数の2の位(セルB3・B4)の3つのビットを足した結果の「2の位の値」を表示したいものです。2進数のビットは 0 か 1 しか取れません。したがって合計の取り扱いは次のようになります:
- 合計が 0 → 表示は 0
- 合計が 1 → 表示は 1
- 合計が 2 → 表示は 0(そして上位へ繰り上がり)
- 合計が 3 → 表示は 1(上位へ繰り上がり)
選択肢のうち、ア の式
IF(合計(B2:B4)<2, 合計(B2:B4), IF(合計(B2:B4)=2, 0, 1))
は上のルールに一致します。つまり合計が0か1ならそのまま表示し、合計が2なら0、合計が3なら1を返します。これが「2の位の結果」を正しく表すための条件分岐になっているため正解です。
(例)問題の図の例では C3=0,C4=1 なので B2=0、B3=1、B4=1。合計は で、B5 は 0 になります。ア の式はこれを正しく出力します。
補足説明(用語): IF関数は「条件式が真のときに第2引数を、偽のときに第3引数を返す関数」です。合計関数(SUMに相当)は「指定範囲の数値を合計する関数」です。
解法ステップ
- まず 1の位の足し算結果から繰り上がりを B2 に入れている(セルB2の式は IF(C3+C4=2,1,0))。ここで C3,C4 は 1の位のビット。
- B2(繰り上がり)と B3,B4(それぞれの2の位)を合計する。Excelの合計は 合計(B2:B4)(=SUM(B2:B4))で求める。
- 合計の値に応じて 2の位に表示するビットを決める:合計が0か1ならそのまま、合計が2なら0、合計が3なら1。
- この条件を IF を入れ子にして表現したものが ア の式である。
実際の式(セルB5):
IF(合計(B2:B4)<2, 合計(B2:B4), IF(合計(B2:B4)=2, 0, 1))
選択肢別の誤答解説
-
イ: IF(合計(B2:B4)<2, 合計(B2:B4), IF(合計(B2:B4)=2, 1, 0))
→ 合計が2のときに 1 を返してしまうため誤り。合計=2は 2進で "10" なので下位ビットは 0 が正しい。 -
ウ: IF(合計(B2:B4)>2, 合計(B2:B4), IF(合計(B2:B4)=2, 0, 1))
→ 合計が 3 のときに合計そのもの(3)を返してしまうため誤り。セルには 0 または 1 のビットを入れたいのに 3 が入ってしまう。 -
エ: IF(合計(B2:B4)>2, 合計(B2:B4), IF(合計(B2:B4)=2, 1, 0))
→ 合計が3のとき 3 を返し、合計が2のとき下位ビットを1にしてしまう。どちらも誤り。
ポイントは「返す値は必ず 0 か 1」であり、合計値そのものを返すべきでない場面(合計が2や3のとき)を正しく処理しているかです。
よくある誤解
- 「合計をそのまま表示すればよい」と考える誤り:合計が2や3のときは1ビットで表せないため、そのまま表示すると誤りになります(例:3 をセルに入れるのは不適切)。
- IF の条件順を逆にするミス:例えば最初に >2 を判定すると、合計が2の場合に誤った分岐に入ることがあります。判定は「小さいか(<2)」などシンプルな条件から考えると分かりやすいです。
- B2(繰り上がり)を忘れて B3+B4 だけで考える:1の位からの繰り上がりを含めないと間違った答えになります。
補足コラム
もっと簡潔に書く別解(Excel関数を使う):
- 下位ビット(セルB5)は合計の「2で割った余り」を取ればよいので、次の式で同じ結果が得られます。
合計と剰余を求める関数の説明: MOD関数は「割ったあとの余り(剰余)」を返す関数です。
MOD(合計(B2:B4), 2)
- 上位への繰り上がり(セルA5)を求めるには整数部分を取ればよいです。INT関数(小数点以下を切り捨てる)を使う例:
INT(合計(B2:B4)/2)
この二つを組み合わせると、IF のネストなしでビットと繰り上がりを求められ、よりシンプルでミスが少なくなります。
FAQ
Q1: なぜセルB2に IF(C3+C4=2,1,0) を入れているのですか?
A1: 1の位(C3,C4)を足すと最大で 1+1=2 になるため、合計が 2 の場合のみ「上位へ繰り上がり(1)」が発生します。合計が0か1なら繰り上がりは 0 です。
A1: 1の位(C3,C4)を足すと最大で 1+1=2 になるため、合計が 2 の場合のみ「上位へ繰り上がり(1)」が発生します。合計が0か1なら繰り上がりは 0 です。
Q2: 合計が 3 になることはあるのですか?
A2: はい。B2(繰り上がり)=1、B3=1、B4=1 のとき合計は になります。下位ビットは 1、上位にさらに繰り上がり(1)となります。
A2: はい。B2(繰り上がり)=1、B3=1、B4=1 のとき合計は になります。下位ビットは 1、上位にさらに繰り上がり(1)となります。
Q3: ロケールによって関数の区切り文字は違いますか?
A3: はい。日本語Excelではカンマ(,)を使うことが多いですが、環境によってはセミコロン(;)を使う場合があります。問題文の表記(カンマ)に合わせてください。
A3: はい。日本語Excelではカンマ(,)を使うことが多いですが、環境によってはセミコロン(;)を使う場合があります。問題文の表記(カンマ)に合わせてください。
関連キーワード: 表計算、二進数、2進法、繰り上がり、IF関数、合計関数、MOD関数、ビット演算、SUM関数

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

