二の補数とは?初心者にもわかる基礎解説と使い方共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
二の補数とは?初心者にもわかる基礎解説と使い方共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)


はじめに

二の補数とは、整数を二進数で表すときに使う「符号付きの表現方法」の一つです。コンピューターは基本的に0と1の信号だけで計算します。正の数と負の数を同じ計算機で足し算したいとき、どうやって区別して計算をするかが問題になります。そこで現代のほとんどの機械は「二の補数」という形式を採用して、正の数と負の数を同じ並べ方で表し、足し算の回路だけで引き算までできるようにしています。

二の補数の基本的な考え方

二の補数の基本は「ある数の二の補数 = その数を8桁や16桁のビットで反転させて1を足す」という考え方です。反転とは0を1に、1を0にする作業です。たとえば8-bit の場合、+5 は 00000101 です。これを負の数として扱うときは、全ビットを反転させてから1を加えます。

計算の手順をもう少し詳しく見てみましょう。まず正の数のビット列を用意します。次に各ビットを反転させ、最後に1を加えます。これがその数の「二の補数表現」です。例えば +5 の二の補数は 11111011 となります。これは「-5」を表す表現として使われます。この仕組みのおかげで、機械の加算回路だけを使って正の数と負の数の計算を行えるのです。

重要な点は次の3つです。

1) 二の補数は「符号付き整数の統一表現」です。正の数と負の数を同じ並びで表せます。

2) 符号ビットが最上位ビット(左端)に来ます。最上位ビットが0なら正、1なら負の数を表します。

3) 満了のビット長に依存します。8-bit、16-bit、32-bitなど、ビット長が変わると同じ数でも表現が変わります。

具体的な例と変換の実演

以下は典型的な8-bit の例です。数値と二の補数の対応を表にしてみます。

<th>数値
二の補数(8-bit)
+500000101
-511111011
+000000000
+100000001
-111111111

ここで注意したい点は「+5」と「-5」が別のビット列になることです。二の補数表現の魅力は、負の数を用意するのが反転+1の操作で済む点と、加算器だけで引き算までできる点にあります。たとえば 8-bit の場合、5 + (-5) はゼロになります。具体的には 00000101 + 11111011 を計算すると 00000000 になります。これは機械の足し算で正と負の数の合わせ技が成立する典型的な例です。

なぜ二の補数が広く使われるのか

二の補数を使う最大の利点は、加算回路だけで正と負の数の計算を扱える点です。別の表現方法、中には「真符号表示」などもありますが、足し算のときの端数処理や減算の実装が煩雑になります。二の補数では、減算も加算と同じ回路で処理できるため、ハードウェア設計がシンプルになります。これはCPU や組み込み機器、スマートフォンの計算機部分で長い間使われてきた理由です。

まとめ

二の補数とは、整数を反転して1を足すことで生成される、符号付き整数の表現方法です。ビット長が決まっている限り、加算器をそのまま使って正と負の数の計算を行えます。中学生でも理解できるポイントは「最上位ビットが符号を表し、反転+1 の操作で負の数を作る」という点と、8-bit などのビット長に注意することです。実務ではこの考え方を前提に、さまざまなプログラミング言語やハードウェアが動作します。


二の補数の同意語

二の補数
正の数は通常の二進表現のまま表し、負の数は絶対値のビットを反転させた後1を足すことで表す、二進法の補数表現の一つです。
2の補数
同じ意味の表現です。正の数は通常の二進表現、負の数は2の補数として表します。
二の補数表現
負の数を表すときに2の補数を用いる二進法の表現方法。CPUなどで広く使われ、符号付き整数の計算を一貫して行えます。
2の補数表現
負の数を2の補数として表す、二進法の表現方法です。正の数はそのまま、負の数は補数をとって1を足した形で表します。
二の補数表現法
二の補数として表現する方法のこと。負の値の表現と演算を容易にする設計思想です。
2の補数表現法
2の補数として表現する方法のこと。正と負の整数を同じ回路で扱える利点があります。
二進法の補数表現
二進法で補数を用いた表現の総称。最も一般的なのは2の補数で、符号付き整数を一貫して表現します。

二の補数の対義語・反対語

無符号整数
符号を使わず、正の整数のみを表現する二進法の表現。二の補数は負の数を表現するための方法であり、無符号整数には「負の数を表さない」という点で対極的。
一の補数表現
負の数を表す際、各ビットを反転させて表現する方式。二の補数と比べると演算が複雑で、0と-0が別の値として扱われるなどの特徴がある。
符号付き絶対値表現(符号付きマグニチュード表現)
符号ビットで正負を示し、それ以外のビットで絶対値を表す方式。負の数は符号ビットが1、絶対値は絶対値のまま表現される。

二の補数の共起語

二の補数
二の補数は、負の数を正の数のビット反転に1を足して表す、符号付き整数の表現法です。
二の補数表現
nビットの二の補数表現では、表現できる範囲は-2^(n-1)〜2^(n-1)−1。0はゼロとして一意に表現されます。
符号付き整数
正の数と負の数を同時に表現できる整数の形式。
符号ビット
最上位ビットが符号を示す指標で、0が正、1が負と解釈されることが多い。
ビット幅
表現に使われるビット数(例: 8ビット、16ビット、32ビット)。
最小値
そのビット幅で表現できる最小の値。例: 8ビットなら-128。
最大値
そのビット幅で表現できる最大の値。例: 8ビットなら127。
オーバーフロー
演算結果が表現可能範囲を超えたときに発生するエラー。符号付き演算では特に注意。
キャリー
加算時の繰り上がりのこと。二の補数ではオーバーフロー判定と別の挙動になることが多い。
符号拡張
桁を増やすとき、元の符号を保つように上位ビットを同じ符号で埋める操作。
算術右シフト
右へシフトする際、負の数は符号を維持するように上位ビットを埋める(-1は1で埋める)挙動。
1の補数
別の負数表現。二の補数と比べてゼロが二つ存在するなどの違いがある。
負数表現
負の数を表す表現全般。二の補数はその中でも最も普及している方法の一つ。
ゼロ
二の補数表現ではゼロは唯一の0表現(全ビット0)として表される。
二進数
二の補数は二進数のビット列で表現される基本形式。
計算方法
負の数を作る方法として、正のxの2の補数は2^n - x、または1の補数に1を足す。
例: 8ビットでの表現
8ビットの場合、127=01111111、-128=10000000、-1=11111111、-5=11111011など。
範囲の例: 8ビットとその他
8ビットは-128〜127、16ビットは-32768〜32767、32ビットは-2147483648〜2147483647のように固定幅ごとに決まる

二の補数の関連用語

二の補数
整数を二進数で表す際の主流の符号付き表現。Nビットでは -2の(N-1)乗 から 2の(N-1)乗 - 1 までの値を表現でき、負の数は正の数のビット列を反転して1を足すことで得られる。
1の補数
負の数をビット反転で表す表現。0には正の0と負の0の二通りがあり、加算時には末尾に回して端数を処理する端数回しが必要な場合がある。
符号付き整数
正負の値を含む整数を表現するデータ型。二の補数はその中でも最も一般的な表現形式の一つ。
負の数の表現
負の値を表す方法全般のこと。二の補数・1の補数などが代表的な表現方式。
Nビット/ビット長
整数を表すビット数。Nビット表現では取り扱える値の総数が決まり、計算もその桁数で行われる。
表現範囲
Nビットの二の補数表現で表現可能な整数の範囲。例: 8ビットなら -128 〜 127(-2の7乗 〜 2の7乗 -1)。
ゼロの表現
二の補数では 0 は一意の表現で、正の0と負の0が区別されない。
符号ビット
最上位ビット(MSB)が符号を示すことが多く、0なら正、1なら負と解釈される場合が多い。
符号拡張
ビット長を伸ばすとき、元の最上位符号ビットを繰り返して値を正しく拡張する処理。
加算器/全加算器
二の補数表現では加算回路だけで加算と減算を実現できる。各ビットを処理する全加算器が基本部品。
減算の実現
減算は被減数の負数を足すことで実現できる。A から B を引くには A + (-B) を計算する。
オーバーフロー
計算結果が表現範囲を超えたときに発生する現象。二の補数では符号ビット周辺のキャリー状態の変化で検出されることが多い。
キャリー/借り
加算で生じるキャリーと、減算で生じる借りのこと。オーバーフロー判定や算術の理解に役立つ指標となる。
実用上の特徴
二の補数の最大の利点は、正負を区別せずに加算器一つで加算と減算を実現できる点。回路が単純化され、演算性能が安定する。

二の補数のおすすめ参考サイト


インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
16458viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
2853viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
1178viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
1170viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
1045viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
1013viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
1007viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
977viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
871viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
864viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
809viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
807viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
782viws
xlsmとは?初心者でも分かるExcelのマクロ付きファイルの基本共起語・同意語・対義語も併せて解説!
736viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
709viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
672viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
617viws
countifとは?初心者でもすぐ使える基本と応用ガイド共起語・同意語・対義語も併せて解説!
607viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
598viws
googleドキュメントとは?初心者が今日から使いこなす基本ガイド共起語・同意語・対義語も併せて解説!
542viws

新着記事

インターネット・コンピュータの関連記事