換算

2の補数計算機

設定
リセット
結果を共有
保存
埋め込み
バグを報告

計算機を共有

無料の電卓をあなたのウェブサイトに追加する

ソース

有効なURLを入力してください。HTTPS URLのみがサポートされています。

スタイル

入力ボーダーフォーカス色、スイッチのチェック時の色、選択項目のホバー色など。

詳細設定

利用規約に同意してください。

プレビュー

計算機を保存

計算機の設定

許可された範囲内の値を入力してください。

許可された範囲内の値を入力してください。

許可された範囲内の値を入力してください。

許可された範囲内の値を入力してください。

計算機を共有

2の補数とは何ですか?

2の補数は、コンピューターが固定ビット数を使って符号付き整数 — 正にも負にもなり得る数 — を格納する標準的な方法です。マイナス符号のために別の記号を用意する代わりに、負の数は普通の2進数の加算がそのまま機能するように符号化され、符号のための特別な処理は不要です。ほぼすべての現代のCPUは、この方法で整数を表現します。

この計算機は、10進整数とビット幅(8、16、または32ビット)を受け取り、その2の補数のパターンを2進数と16進数の両方で表示します。

どのように機能しますか?

選んだ幅 ww ビットに対して、各値は符号なしのビットパターンとして格納されます:

  • nn非負なら、そのパターンは単に nn の2進数で、ww ビットになるよう先頭にゼロを埋めます。
  • nnなら、そのパターンは 2w+n2^w + n の2進数です。

2番目の場合は nn が負なので、2w+n2^w + n2w2^w より小さい正の値となり、常に ww ビットに収まります。最上位(左端)のビットは、あらゆる負の数で 11、あらゆる非負の数で 00 になります — このビットが符号の役割を果たします。

公式

pattern(n)={nif n02w+nif n<0\text{pattern}(n) = \begin{cases} n & \text{if } n \ge 0 \\ 2^{w} + n & \text{if } n < 0 \end{cases}

結果はちょうど ww 桁の2進数(または w/4w/4 桁の16進数)で書かれます。

計算例

例1:正の数

n=5n = 588 ビットで符号化します。505 \ge 0 なので、パターンは単に 55 の2進数を8桁に埋めたものです:

5000001012=0x055 \rightarrow 00000101_2 = \text{0x05}

例2:マイナス1

n=1n = -188 ビットで符号化します。1<0-1 < 0 なので、28+(1)=2561=2552^8 + (-1) = 256 - 1 = 255 を計算します:

255111111112=0xFF255 \rightarrow 11111111_2 = \text{0xFF}

マイナス1は、幅がいくつであっても常に途切れのない1の並びになります。

例3:マイナス5

n=5n = -588 ビットで符号化します。28+(5)=2565=2512^8 + (-5) = 256 - 5 = 251 を計算します:

251111110112=0xFB251 \rightarrow 11111011_2 = \text{0xFB}

参照表(8ビット)

10進数2の補数の2進数16進数
5000001010x05
0000000000x00
-1111111110xFF
-5111110110xFB
127011111110x7F
-128100000000x80

注意点

  • 88 ビットの符号付き整数は 128-128 から 127127 の範囲を、1616 ビットは 32,768-32{,}768 から 32,76732{,}767 を、3232 ビットはおよそ ±2.1\pm 2.1 億をカバーします。選んだ範囲外の値は 2w2^w を法として折り返します。
  • 先頭のビットは符号です:00 は非負の数、11 は負の数を表します。
  • 符号ビットのない通常の非負の数を2進数に変換するには10進数から2進数への変換器を、他の基数には一般的な数体系変換器を使ってください。

よくある質問

2の補数で-1はどうなりますか?

どの幅でもすべて1になります:8ビットでは 11111111211111111_2(0xFF)、16ビットでは 111111111111111121111111111111111_2(0xFFFF)、といった具合です。

負の数の2の補数を手で求めるには?

その数の大きさを2進数で書き、すべてのビットを反転し、1を足します。5-5 を8ビットで求めると:550000010100000101、反転すると 1111101011111010、1を足すと 11111011111110112565=251256 - 5 = 251 と同じ結果です。

なぜビット幅が重要なのですか?

幅はパターンが占めるビット数を決め、したがって格納できる数の範囲を決めます。同じ10進値でも、幅が大きくなるほど先頭のゼロや1の並びが長くなります。

バグを報告

このフィールドは必須です。