2の補数とは?意味をわかりやすく簡単に解説

2の補数とは?意味をわかりやすく簡単に解説

公開: 更新:
CodeCampが提供するDX人材育成が可能なプログラミングやITが学べる公開講座


2の補数とは

2の補数とは、コンピュータが負の整数を表現するために使用する符号付き数値の表現方法です。ビット反転してから1を加算することで元の数値の負数を得られるため、減算を加算回路で実現できます。

この方式では最上位ビットが符号ビットとして機能し、0なら正の数、1なら負の数を表現します。nビットで表現できる範囲は-2^(n-1)から2^(n-1)-1までとなり、8ビットの場合は-128から127までの整数を扱えます。

【PR】プログラミングや生成AIを無料で学べる「コードキャンプフリー」

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で確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。

ITやプログラミングに関するコラム


ITやプログラミングに関するニュース

ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。

CodeCampが提供するDX人材育成が可能なプログラミングやITが学べる公開講座 - IT・プログラミングを知って学べるコネクトメディア コードキャンプが提供する無料で学べるプログラミングスクール講座 - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア 配属3ヶ月で30%の生産性向上を実現するいよぎんコンピュータサービスの新人研修に迫る - IT・プログラミングを知って学べるコネクトメディア 金融業界の業務効率化を加速するニッセイアセットマネジメントの生成AI×GAS活用研修事例 - IT・プログラミングを知って学べるコネクトメディア 【製造業のDX人材育成事例】デジタル人材の即戦力化を実現する、日本ガイシ株式会社の異動者向オンボーディング研修 - ITやプログラミングを知って学べるコネクトメディア フューチャーアーキテクト株式会社が実現した新入社員向けIT研修プログラムでタスクフォース制度が主体的な学びと成長を生み出す - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【IT新入社員研修】オンラインとオフラインの最適バランスを実現したFutureOneの導入事例 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【新入社員研修】柔軟なハイブリッド型Java研修で実現した新卒20名の成長と成果|サークレイス株式会社 - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/現場により近いところにデジタルを根付かせるDX基礎講座研修|株式会社ブリヂストン - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/業務の効率化・DX推進に向けたIT人材育成への第一歩|株式会社カナエ - ITやプログラミングを知って学べるコネクトメディア 企業・法人向けのIT・プログラミング研修 - ITやプログラミングを知って学べるコネクトメディア

新着記事

対象者別で探す

子供(小学生・中学生・高校生)向け
プログラミング教室検索する

子供(小学生・中学生・高校生)がロボットやプログラミング言語を学ぶことができるオフラインからオンラインスクールを検索、比較することが可能です。

子供(小学生・中学生・高校生)
プログラミング教室検索する

ITやプログラムなどの
最新情報を検索する

日々、新しいITやプログラミング言語の情報が流れていきますが、特定の情報を時系列でニュースやコラムを確認することができます。

ITやプログラムなどの
最新情報を検索する