数値・ビット演算・単位

2の補数計算機数値とビット列を分けて読む

入力の意味とビット幅を選び、同じビット列の二つの読み方を確認します。

2の補数計算機

入力

整数一つ、最大256文字。0b/0o/0xは選択した基数に合わせてください。内部の空白、区切り文字、改行、小数は使えません。

入力はこのブラウザー内で処理され、サーバーには送信されません。

結果

十進数の結果
-42
入力を10進数で表示
-42
符号付き十進数
-42
符号なし十進数
214
二進数
11010110
十六進数
0xD6
最上位ビット
1
入力できる範囲
-128 … 127
符号付きの範囲
-128 … 127
符号なしの範囲
0 … 255
ビッグエンディアンのバイト
D6
リトルエンディアンのバイト
D6

負数を補数で表す手順

1. 絶対値を2進数にする
00101010
2. すべてのビットを反転
11010101
3. 1を加える
11010110

オプション

数値は数学的な整数を符号化します。ビット列は非負のパターンを読み、左側をゼロで埋めます。負号は使えません。

設定変更では現在のテキストを読み直します。バイト順は完成したワードに適用し、各バイト内のビット順を保ちます。

入力は選択した範囲内です。

レジスタにはFF、デバッガには−1。この食い違いを調べるとき、2の補数計算機ならビット列を変えずに解釈だけを比較できます。まずは入力が数値なのか、すでに保存されているビット列なのかを決めてください。

数値255は符号付き8ビットの範囲外ですが、ビット列FFは8ビットに収まります。基数だけを選ぶ変換では見落としやすい違いです。本ツールは入力の意味を明示し、元のテキストと範囲判定を残します。

2の補数計算機で確認できる違い

入力を残したまま範囲外を調べる

2の補数計算機に300を入力して8ビットを選ぶと、入力は300のまま、下位8ビットの値は44と表示されます。オーバーフローは構文エラーと区別され、元の数と切り詰めたワードを比較できます。プレビューを入力に適用する操作はありません。

長いビット列の下位8個が短いワードへ写され、上位の位置と元の列が残っている図。

バイトの中身を保って並べ替える

32ビットの0x12345678は、ビッグエンディアンでは12 34 56 78、リトルエンディアンでは78 56 34 12です。入れ替わるのはバイトの位置だけです。バイト内部のビット順や、数値の符号が反転するわけではありません。

二色のバイトブロックが上下で位置を交換し、ブロック内部の印の順番は同じままの図。

入力の意味を変える前に

01

既存データか数値かを決める

初期値は−42、10進数、8ビット、符号付きです。既存のFFを読むならビット列と16進数を選びます。基数の変更は入力を書き換えず読み直すため、10進数のまま0xFFを入力すると接頭辞エラーになります。

02

幅を広げたときの違いを見る

ビット列FFを16ビットに広げると00FF、つまり255になります。テキストの長さから符号拡張は推測しません。数学的な−1を保って幅を広げる場合は、数値モードに−1を入力します。

03

更新後の結果を取り出す

自動計算は入力から350ミリ秒後に実行します。オフにすると計算ボタンとCtrl/Cmd + Enterが使えます。変更直後は出力を無効化。例とクリアは変更数のプレビューを経て適用し、入力と結果を一緒に元に戻せます。

数値から保存されるバイトまで

符号付きと符号なしを同時表示

符号付き整数の範囲は−2^(w−1)から2^(w−1)−1、符号なしは0から2^w−1です。同じFFでも8ビットなら−1または255になります。主な読み方を選んでも、比較用のもう一方の値と範囲は表示し続けます。

負数の変換を三つの行で確認

−42の絶対値は00101010。すべてのビットを反転して11010101にし、1を足すと11010110です。2の補数変換の手順は、選択した幅の符号付き範囲に収まる負の数値入力で表示します。最小の負数も対象です。

64ビットの端まで正確に扱う

18446744073709551615を浮動小数点数へ変換せず、整数のまま処理します。2進数と16進数は幅に合わせてゼロを補い、レポートには元のテキスト、入力モード、範囲状態、両方の解釈とバイト配列を含めます。

解釈と切り詰めのルール

範囲外は剰余のプレビュー
入力が数学的な範囲を外れると、2^wを法とする非負の剰余で下位wビットを残します。符号付き8ビットの128は−128、256は0という表示になります。切り詰めによって元の数値を正確に表せたことにはなりません。
短い列は左側をゼロで埋める
ビット列は非負の整数として読みます。−0を含む負号は拒否しますが、先頭のゼロが多いだけでは超幅としません。基準は2^w−1を超える大きさかどうかです。8ビットの1111は15であり、4ビットの−1を拡張したものではありません。
整数一つだけを受け付ける
基数は2・8・10・16、入力は最大256文字です。前後のASCII空白とタブのみ除去します。内部の空白や桁区切り、改行、小数、10進指数表記、式は使えません。ファイルやURLの読み込み、複数行の一括計算もありません。
符号付き形式は2の補数のみ
幅は8・16・32・64ビットに限定します。符号絶対値表現、1の補数の独立変換、負のゼロ、浮動小数点数は対象外です。途中に表示するビット反転は負数の符号化手順であり、別の表現形式のデコーダーではありません。
実行環境の動作は再現しない
この剰余計算から、特定言語の例外や未定義動作、CPUのフラグ、飽和処理は予測できません。バイト順は完成したワードの配置だけを示します。8ビットでは両者は同じです。加減算や論理演算、シフトは別のツールで扱います。

2の補数計算機のよくある質問

2の補数で−1はどう表しますか?

選んだ幅のビットをすべて1にします。8ビットでは11111111、16ビットでは1111111111111111です。数値モードに−1を入力すると幅に応じて生成されます。短いビット列を入力した場合は同じ結果になるとは限りません。

負の数を手計算で変換するには?

絶対値を選んだ幅の2進数に直し、全ビットを反転して1を加えます。−5の8ビット表現は00000101 → 11111010 → 11111011です。計算前に元の数が符号付き範囲に収まることも確認してください。

ビット幅を先に決めるのはなぜですか?

幅によって符号の位置、表現範囲、埋めるゼロの数が変わるからです。8ビットのFFは−1ですが、16ビットの00FFは255です。記録されたデータを読むときは、元のフィールドの幅を指定する必要があります。

2の補数から10進数へ戻すには?

ビット列モードを選び、基数と幅を合わせます。最上位ビットが1なら、符号なしの値から2^wを引くと符号付きの値になります。8ビットの11111011は251−256で−5です。両方の値を結果欄で確認できます。

最上位ビットが1なら必ず負ですか?

符号付きの2の補数として読む場合に限ります。符号なしなら最上位ビットも大きさの一部です。8ビットの10000000は符号付きでは−128、符号なしでは128で、ビット列そのものは変わりません。

想定と違う結果ですか?

別の境界値を調べる

2の補数計算機で一つの値を確認したら、入力モードや幅を変えて差を調べてください。更新済みのレポートなら、元の入力と範囲判定を残してデバッグ結果と比較できます。