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やプログラミングに関するコラム
- カラーチャートの組み合わせ配色やおすすめツールを解説
【AWS】認定資格12種類の一覧や難易度、費用などを解説
Canvaとは?使い方やアカウント登録などを初心者向けに解説
git configで設定情報を確認・表示する方法
「Pythonはやめとけ」と言われる理由と学習するメリット
Ubuntuのversionを確認する方法
Geminiで画像を生成する方法|ChatGPTとの比較結果も紹介
CodexがChatGPT Plusユーザー向けに解禁されたので使ってみた!できることや料金プランも併せて紹介
【Python】仮想環境から抜ける方法
【Python】文字列から改行コードを除去する方法
ITやプログラミングに関するニュース
東京都と東京観光財団が観光事業者向けセミナーを開催、サステナブルツーリズムを解説
株式会社ディーエスブランドが無料ウェビナー開催、生成AIによる業務効率化の実践術を解説
北九州市が事業承継セミナーを開催、後継者不在問題の解決に向け第三者承継を解説
株式会社スマート修繕が無料Webセミナー開催、マンション大規模修繕の談合や事例を解説
法律事務所瀬合パートナーズがウェビナー開催、物流・運送業向け改正下請法の実務対応を解説
IRISデータラボと日本郵便が愛媛香川でセミナー開催、LINE活用で地域特産品の販促を支援
株式会社AがAstreamの解説ウェビナーを開催、インフルエンサーマーケティングの内製化を支援
ホリエモンAI学校がシフト管理効率化ウェビナーを開催、属人化を解消し現場の負担軽減へ
マーケティングアソシエーションが共催ウェビナー開催、売上とLTVを伸ばす勝ちパターンを解説
株式会社fundbookが経営者向けセミナーを開催、M&Aによるライフプランと出口戦略を解説


