2の補数計算ツール

符号付きの数、または数のビット列を入力すると、コンピュータが保存するパターンを表示します。1の補数と符号付き絶対値の形も並べて示すため、3つの方式を比べやすくなっています。

無料 ブラウザで動作 2026年11月10日火曜日確認済み

-5のような符号付きの数、または FB や11111011のような16進数か2進数のビット列です。

書き方

結果

2の補数のビット列 — その幅が数について保持するビットを、4桁ずつのまとまりで示します。
16進数 —
符号付きの値 — 2の補数で、そのビット列が表す数です。
符号なしの値 —
この幅の範囲 —
確認 — 数がその幅に収まるかどうかを示します。
比べる方式

このツールはブラウザ内で動作します。入力した内容が当社に送信されることはありません。

使い方

  1. 数またはビット列に数を入力します。ビット列の場合は、書き方で16進数か2進数を選びます。
  2. ビット幅を選びます。コンピュータが保存するビットの数で、8、16、32、64のいずれかです。
  3. 保存されるパターンは2の補数のビット列で読み、ほかの2つの方式は比べる方式で読みます。
  4. 確認が数は収まらないと示した場合、表示されるビットは、代わりにコンピュータが保存するものです。

負の数の保存

コンピュータは、符号付きの整数を決まったビット数で保存します。2の補数では、最上位ビットが −2^(n−1) を表し、ほかのビットは通常どおり足し合わされます。−5を8ビットで書くには、5を00000101と書き、すべてのビットを反転して1を足します:11111010 + 1 = 11111011。

−5  →  00000101  →  11111010  →  11111011(16進数で FB)

1の補数と符号付き絶対値

  • 1の補数は、大きさのすべてのビットを反転します。−5は11111010です。
  • 符号付き絶対値は、大きさをそのまま保ち、最上位ビットを符号にします。−5は10000101です。
  • どちらも0が2つあります。1の補数でのすべて1のビット、および符号付き絶対値で符号ビットだけが1のものは −0です。
  • 2の補数は0が1つで、正の数より負の数が1つ多くあります。ほとんどのプロセッサが整数に使う方式です。

範囲とオーバーフロー

n ビットの2の補数の範囲は −2^(n−1) から2^(n−1) − 1です。8ビットでは −128から127まで、32ビットでは −2,147,483,648から2,147,483,647までです。範囲外の値は折り返されます。200は8ビットに収まらず、11001000は2の補数で −56を表すため、−56と読まれます。

このツールが扱わないもの

  • 演算:このツールが示すのは、数がどう保存されるかであり、2つの数を足したり掛けたりした結果ではありません。
  • 小数と浮動小数点数は、それ自身の形式を持ちます。IEEE 754の変換ツール を参照してください。
  • オーバーフローで折り返さず、エラーを出す言語があります。このツールは折り返した結果を示し、その旨を表示します。

例:8ビットの −5

書き方を10進数、ビット幅を8ビットにして −5を入力します。2の補数のパターンは11111011で、16進数では FB、符号なしの数としては251です。

同じ −5を別の2つの方式で見ると、1の補数は11111010、符号付き絶対値は10000101です。

方式 ビット 16進数 値
2の補数 1111 1011 FB -5
1の補数 1111 1010 FA -5
符号付き絶対値 1000 0101 85 -5
符号なし 1111 1011 FB 251

よくある質問

コンピュータは、マイナス記号ではなく2の補数を使うのはなぜですか?

マイナス記号は、加算の回路ごとに独自の規則が必要になります。2の補数では、負の数と正の数で足し算と引き算が同じように働き、0も1つしかありません。

負の範囲が正の範囲より1つ多いのはなぜですか?

0が2^n 個のパターンの1つを使うため、正の値は1から2^(n−1) − 1まで、負の値は −2^(n−1) まで下がります。8ビットでは、余分な値は −128で、対になる正の値がありません。

このページでオーバーフローとは何を意味しますか?

数がビット幅より多くのビットを必要とすることです。ページは、その幅が保持するビットを示し、確認の行は値が収まらないと示します。例えば、8ビットの128は10000000を保持し、これは −128と読まれます。

64ビットの計算では、なぜ正確な整数を使うのですか?

JavaScript の数は2^53までしか正確ではなく、64ビットの値は2^64まであるためです。このページは BigInt を使うため、すべてのビットが保たれ、−9,223,372,036,854,775,808という下限も正確に示されます。

Java は整数に2の補数を使いますか?

はい。Java 言語仕様は、整数型を2の補数で定義しているため、int は32ビットの2の補数、long は64ビットの2の補数です。

出典

数値と文章の最終確認日:2026年11月10日火曜日。

当サイトの運営に必要なCookieを使用します。お客様の同意があれば、Googleは広告用Cookieを使い、パーソナライズ広告を表示します。拒否された場合も広告は表示されますが、パーソナライズはされません。