戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

ITパスポート 2017年 春期 72


問題文

二つの2進数01011010と01101011を加算して得られる2進数はどれか。ここで、2進数は値が正の8ビットで表現するものとする。

選択肢

00110001
01111011
10000100
11000101(正解)

🔒 解説は解答すると表示されます

二つの2進数の加算(8ビット表現)【ITパスポート 解説】

正解の理由

問題は「二つの2進数 01011010 と 01101011 を加算」し、8ビットで正の値として表現するものです。
2進数(二進法:0と1だけで数を表す方法)を通常通り桁ごとに足すと、合計は になります。197 を8ビットの2進数で表すと です。したがって正しい選択肢は (11000101)です。
※ここで「8ビットで表現する」は符号付き・符号なしの区別が重要ですが、問題文は「値が正の8ビット」と明記しているため、符号なし(unsigned、範囲 )として扱います。

解法ステップ

  1. 各2進数を右端(最下位ビット)から左へ1桁ずつ足します。足し算で「2」になったらその桁は0、次に繰り上がり(キャリー)1を送ります。3の時はその桁は1、キャリー1を送ります。
  2. 桁ごとの計算を順に行うとキャリーが伝播します。実際の計算(右端から):
    • LSB(最下位):0 + 1 = 1 (キャリー0)
    • 次:1 + 1 = 0 (キャリー1)
    • 次:0 + 0 + キャリー1 = 1 (キャリー0)
    • 次:1 + 1 = 0 (キャリー1)
    • 次:1 + 0 + キャリー1 = 0 (キャリー1)
    • 次:0 + 1 + キャリー1 = 0 (キャリー1)
    • 次:1 + 1 + キャリー1 = 1 (キャリー1)
    • 最上位:0 + 0 + キャリー1 = 1 (キャリー0)
  3. 以上で結果の8ビットは 11000101 になります。
  4. 十進数で確認すると、01011010 = , 01101011 = 、合計 、197 の2進数表現が 11000101 です。
(参考:16進数でも簡単です。01011010 = 0x5A、01101011 = 0x6B、0x5A + 0x6B = 0xC5 → 0xC5 = 11000101)

選択肢別の誤答解説

  • ア: 00110001
    これは 2進数で (十進)を表します。合計 とは大きく異なり、桁の足し間違いや複数ビットの消失(桁落ち)が原因と考えられます。
  • イ: 01111011
    これは 2進数で (十進)です。部分的に桁を足し間違えてキャリーがうまく伝わっていない状態と推測されます。
  • ウ: 10000100
    これは 2進数で (十進)です。見た目で MSB(最上位ビット)が1になっていますが、今回の正しい合計は (2進で11000101)であり一致しません。符号付き(2の補数)と混同して誤る場合がありますが、本問は正の8ビット(符号なし)です。
  • : 11000101
    上の手順どおり正しく桁ごとに足した結果と一致します。十進で になり、各検算(十進変換、16進計算)でも確認できます。

よくある誤解

  1. キャリーを忘れる・途中で止める
    • 右から左へキャリーを確実に伝播させないと結果が大きくずれます。特に連続で繰り上がる場面(111+1 のような連鎖)でミスが起きやすいです。
  2. 符号付き(2の補数)と符号なし(unsigned)を混同する
    • 8ビットで先頭が1だと「負の数」と解釈するケースがあります。問題文で「値が正の8ビット」とある場合は符号なしとみなします。符号付きなら表現範囲が異なります(2の補数の範囲は )。
  3. ビット位置(左端が最上位)を逆に扱う
    • 桁の向き(MSB: Most Significant Bit=最上位、LSB: Least Significant Bit=最下位)を混同すると全く別の値になります。加算はLSBから行います。

補足コラム

  • ビット(bit:binary digit)は0か1の情報単位です。8ビットで表せる値は 通りで、符号なしなら が表現可能です。
  • 2の補数(two's complement:負の数を表す方法)は、最上位ビットが1だと負の値に見える仕組みですが、本問は正の値の扱いなので気にする必要はありません。ただし試験問題では「正の8ビット」「符号付き8ビット」など記述に注意してください。
  • 手早く確認したい場合は電卓やプログラムで十進に直して加算し、再び2進数に戻すとミスが減ります。
簡単な Python 例(確認用):
a = int('01011010', 2)
b = int('01101011', 2)
s = a + b
bin_str = format(s, '08b')  # 8桁の2進表現
print(a, b, s, bin_str)  # 90 107 197 11000101

FAQ

Q. もし合計が256以上になったらどうなる?
A. 8ビットの符号なし表現では しか表現できないため、256以上になると桁あふれ(オーバーフロー)が生じます。問題で「値が正の8ビット」とある場合、通常はオーバーフローが起きない前提か、発生したら最上位のキャリーは切り捨て(桁落ち)されることが多いと考えます。試験問題は設問文をよく読み、扱う範囲を確認してください。
Q. 符号付きなら結果はどう判断する?
A. 符号付き(2の補数)表現なら最上位ビットが1だと負の値に見えることがあります。符号付きでの和を求める場合は、結果が表現範囲内か()やオーバーフロー発生の有無に注意します。
Q. 電卓で確実に計算するコツは?
A. 2進を直接扱う電卓があればそれが最も簡単です。ない場合は一度十進に変換して足し、得られた十進を2進へ戻す(または16進を利用する)と誤りが少ないです。

関連キーワード: 2進数、ビット、8ビット、キャリー、オーバーフロー、2の補数、桁上がり、十進変換
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

ITパスポート
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について