Skip to the content.

最終更新日:2026年8月14日

まず結論

2の補数は、コンピュータで負の整数を表す代表的な方法です。

正の数から負の数を作るときは、

全ビットを反転
↓
1を加える

という手順を使います。

そして2の補数表現では、負数から絶対値を求めるときも同じく、

全ビットを反転
↓
1を加える

で求められます。

基本情報技術者試験では、

2の補数
→ 反転+1

をまず判断できることが重要です。

直感的な説明

8ビットで正の数を考えてみます。

例えば、

00110110

を負の数にしたいとします。

まず全ビットを反転します。

00110110
↓
11001001

次に1を加えます。

11001001
+       1
--------
11001010

これが元の正数に対応する負数の2の補数表現です。

2の補数の便利な点は、同じ操作をもう一度行うと元のビット列に戻ることです。

11001010
↓ 反転
00110101
↓ +1
00110110

そのため、

正数 → 負数
負数 → 絶対値

のどちらでも同じ操作を使えます。

定義・仕組み

2の補数とは?

nビットの2の補数表現では、負数を

ビット反転
+
1

で表します。

例えば、8ビットで 42 を表すと、

00101010

です。

これを負の -42 にするには、

00101010
↓ 反転
11010101
↓ +1
11010110

となります。

先頭ビットで符号を見る

2の補数表現では、最上位ビットを見ると符号を判断できます。

先頭が0
→ 0以上

先頭が1
→ 負数

例えば、

01010110
→ 正の数

10101010
→ 負の数

です。

なぜ反転して1を足す?

2の補数表現では、nビットの範囲で

正の値
+
対応する負の値
=
2^n

となるように表現します。

その結果、通常の2進数の加算回路をそのまま使って、正負の加減算を扱いやすくなります。

FEでは、仕組みを深く追うより、

2の補数
→ 反転+1

を使えることを優先して覚えるとよいです。

科目Aでどう出る?

科目Aでは、2の補数で表された負数から絶対値を求めたり、ある正数の負数表現を選んだりする問題が出ます。

例えば、

11010100

が8ビットの2の補数で表された負数だとします。

① 全ビットを反転する

11010100
↓
00101011

② 1を加える

00101011
+       1
--------
00101100

したがって、絶対値は、

00101100

です。

試験中の判断手順

先頭ビットを見る
↓
1なら負数
↓
全ビット反転
↓
1を加える
↓
絶対値

とすると安定します。

どんな場面で使う?

2の補数は、コンピュータ内部で符号付き整数を扱うときに使われます。

例えば、

  • CPUの整数演算
  • 符号付き整数型
  • 加算・減算処理
  • オーバーフロー判定

などです。

コンピュータでは、正数と負数で別々の加算回路を用意するより、同じ回路で処理できる方が都合がよいため、2の補数が広く使われています。

よくある誤解・混同

1の補数と2の補数は同じ?

違います。

1の補数
→ 全ビット反転

2の補数
→ 全ビット反転+1

です。

この「+1」を忘れるのが典型的なミスです。

先頭ビットを反転するだけでよい?

違います。

2の補数では、すべてのビットを反転してから1を加えます。

10110010
↓
01001101
↓ +1
01001110

です。

負数の絶対値を求めるときも反転+1?

はい。

2の補数では、

正数
↓ 反転+1
負数

負数
↓ 反転+1
絶対値

と同じ操作を使えます。

先頭が1なら、そのまま正の2進数として読めばよい?

違います。

2の補数表現で先頭が1なら負数です。

その値の大きさを知りたい場合は、

反転+1

で絶対値を求めます。

反転+1を2回するとどうなる?

元のビット列に戻ります。

これは2の補数の重要な性質です。

元の値
↓ 反転+1
符号反転

↓ もう一度反転+1
元の値

確認問題(基本情報技術者試験対策)

8ビットの2の補数で表された負数

11001101

の絶対値はどれか。

  • ア. 00110001
  • イ. 00110010
  • ウ. 00110011
  • エ. 00110100
▶ クリックして答えと解説を見る(ここを開く)

正解:ウ

まず全ビットを反転します。

11001101
↓
00110010

次に1を加えます。

00110010
+       1
--------
00110011

したがって、絶対値は 00110011 です。

まとめ(試験直前用)

  • 2の補数は負数を表す代表的な方法
  • 2の補数 → 全ビット反転+1
  • 先頭ビットが0なら0以上、1なら負数
  • 負数の絶対値を求めるときも反転+1
  • 1の補数は反転だけ
  • 2の補数は反転+1
  • 反転+1を2回行うと元のビット列に戻る
  • 試験では「先頭1 → 反転 → +1」で解く

© 2024-2026 stemtazoo. All rights reserved.