2の補数を10進数へ変換する方法|2進数・16進数の読み方

この記事の要点

ビット列をすぐ解析する

2進数または16進数を入力し、符号付き10進数を確認できます。

2の補数変換ツールを使う

最上位ビットで符号を判定する

最初にビット幅を確定します。最上位が0なら0以上、1なら負数です。たとえば1101 0110は8ビットでは負数ですが、先頭に0を付けた9ビットの0 1101 0110なら214です。

方法1:反転して1を足す

  1. 1101 0110の全ビットを反転:0010 1001
  2. 1を加算:0010 1010
  3. 0010 1010は42。元は負数なので-42
結果

1101 0110 → -42

2の補数をもう一度取ると絶対値へ戻る性質を利用しています。

方法2:符号なし値から2のn乗を引く

1101 0110を符号なしで読むと214です。8ビットなので256を引きます。

214 − 28 = 214 − 256 = −42

先頭が1のときは常に符号なしの値 − 2ⁿで求められます。プログラムや多数の値を処理するときに便利です。

16進数D6から変換する

HEXの1桁は4ビットです。D6は2桁なので通常は8ビットとして扱い、2進数にすると1101 0110です。先頭が1なので、0xD6 = 214から256を引いて-42になります。

HEXだけでは符号は決まりません

FFは8ビット符号付きなら-1、符号なしなら255です。データ型や通信仕様を確認してください。

最上位が0なら通常どおり読む

0010 101032 + 8 + 2 = 42です。反転や引き算は不要です。0000 0000は0で、2の補数では負の0はありません。

よくある質問

2の補数を10進数へ戻す方法は?

先頭が0なら通常の2進数として読みます。先頭が1なら反転して1を足し、得られた絶対値に負号を付けます。

11010110を8ビットで読むと何ですか?

符号付き2の補数では-42、符号なし整数では214です。

引き算で求める方法はありますか?

はい。符号なしの値から2のビット幅乗を引きます。11010110なら214-256=-42です。

16進数D6は常に-42ですか?

いいえ。8ビットの符号付き2の補数として読む場合に-42です。符号なしなら214です。