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で確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
PythonをWebで実行する方法
共通テスト「情報Ⅰ」2年目で変わる、日本の教育と学び方
gitでブランチ(branch)を切り替える方法
git cloneでブランチを指定する方法
64GBのメモリが必要な人・不要な人の特徴
PCを再起動するコマンド一覧
CapsLock以外で大文字になる原因【Windows編】
パソコンで大文字になるのを解除する方法
面白いAIの活用事例を業界別に紹介
Gitでcommit(コミット)を取り消す方法
ITやプログラミングに関するニュース
サイボウズがkintone AIを正式提供、β版から約1年を経てクレジット制を導入
ロゼッタのラクヤクAIがCSRドラフト作成期間を90%以上短縮、従来4週間を約2日に
AI CROSSが不動産業界向け生成AI伴走支援を開始、アスコットの業務AI実装を実践サポート
日本情報クリエイトが「オーナー提案AIロボⅡ」売買査定を刷新、月1万円からW査定が回数無制限に
Wur株式会社がAI新規事業診断サービス「MVP事業診断レポート」をリリース、12の質問で事業構想を約10分で分析
バトンズがM&A専門家向け「AI概要書」β版を提供開始、企業概要書のドラフトを最速3分で自動生成
SCSKが観光DXサービス「Connexia」を開発、首里城公園でNFT活用の周遊促進が始動
Verdent AI発表、エンジニア不要でソフトウェアを構築する「AIエンジニアリングチーム」が登場
ゼネラルBREXAテクノロジーが外食・小売向けAIサービス「aimana」を開発、店長の意思決定をデータで支援
田中組がKencopa工程AIエージェント製品版を先行利用開始、建設現場の工程管理属人化を解消へ
