2の補数とは?意味をわかりやすく簡単に解説
公開:
2の補数とは
2の補数とは、コンピュータが負の整数を表現するために使用する符号付き数値の表現方法です。ビット反転してから1を加算することで元の数値の負数を得られるため、減算を加算回路で実現できます。
この方式では最上位ビットが符号ビットとして機能し、0なら正の数、1なら負の数を表現します。nビットで表現できる範囲は-2^(n-1)から2^(n-1)-1までとなり、8ビットの場合は-128から127までの整数を扱えます。
2の補数の計算手順
2の補数を求めるには、まず対象となる2進数の各ビットを反転させる1の補数を作成します。例えば8ビットで5を表す00000101に対してビット反転を行うと11111010となります。
| 手順 | 操作内容 |
|---|---|
| ステップ1 | 元の2進数を用意 |
| ステップ2 | 全ビットを反転 |
| ステップ3 | 1を加算 |
| 結果 | 2の補数が完成 |
次にビット反転した値に1を加算することで2の補数が完成し、11111010に1を加えた11111011が-5の表現となります。この計算により得られた値を元の正数と加算すると、全ビットが0になる性質を持っているのです。
プログラムでの2の補数実装
C言語では符号付き整数型が標準で2の補数表現を採用しており、負数の内部表現を意識せずに演算できます。ビット演算子を使用して明示的に2の補数を計算する場合は、NOT演算子とインクリメント演算を組み合わせるのです。
#include <stdio.h>
int main() {
int num = 5;
int twos_complement = ~num + 1;
printf("元の値: %d\n", num);
printf("2の補数: %d\n", twos_complement);
printf("加算結果: %d\n", num + twos_complement);
return 0;
}
このコードでは変数numに格納された5に対してチルダ演算子でビット反転を行い、その結果に1を加算しています。実行すると-5が出力され、元の値との加算結果は0となることで2の補数の特性が確認できるのです。
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
左へフリックで次のページ、右へフリックで前のページに戻れます左右の矢印ボタン、左右のスワイプで移動できます





