UTILS.
100% ブラウザ内で完結
🔢

2の補数変換ツール

符号付き整数を4、8、16、32、64ビット幅の2の補数バイナリと16進に相互変換し、1の補数と符号なし解釈も表示します。

上に数値またはビットパターンを入力してください。

このツールについて

2の補数変換ツールは、符号付き整数を選んだビット幅(4、8、16、32、64ビット)で2の補数のバイナリおよび16進表現にエンコードし、バイナリまたは16進パターンをそれが表す符号付き値にデコードします。全体を通してBigIntを使うため、64ビット値も精度の損失なく正確に扱えます。

Nビット幅の符号付き範囲は −2^(N−1) から 2^(N−1)−1 です。10進数 d をエンコードするには:d が非負ならパターンは単純に d、d が負なら 2^N + d(同等に、|d| の全ビットを反転して1を足す)です。ツールはNビットのゼロ埋めバイナリ、N/4桁の16進、1の補数(ビットごとのNOT)、同じビットの符号なし解釈を出力し、値が選択した幅に収まらない場合はオーバーフローエラーをフラグします。

デコードするには、バイナリまたは16進パターンを貼り付けると、ツールはその最上位ビットを読みます:最上位ビットがセットされていれば値は パターン − 2^N(負)、そうでなければパターン自体です。常に符号付きと符号なしの両方の読み方を並べて表示します。これはまさに2の補数がハードウェアレベルで解決する曖昧さです。すべての計算はブラウザ内でローカルに行われます。

よくある質問

各ビット幅の範囲は何ですか?
Nビット幅は −2^(N−1) から 2^(N−1)−1 までの符号付き値を表します。したがって8ビットは −128〜127、16ビットは −32768〜32767、32ビットは約±21億です。範囲外の値はオーバーフロー警告を出します。
負数はどうエンコードされますか?
絶対値を取り、すべてのビットを反転(1の補数)して1を足します。同等に、パターンは 2^N に負数を足したものに等しくなります。たとえば8ビットの −1 は 11111111、−42 は 11010110 です。
なぜ符号なしの値も表示するのですか?
同じビットパターンには2つの読み方があります:符号付き(2の補数)と符号なしです。両方を表示することで、たとえば8ビットのパターン 11111111 が符号付きでは −1 だが符号なしでは 255 であることが明確になります——解釈はハードウェアの扱い方に依存します。
64ビット値を正確に扱えますか?
はい。変換ツールは任意精度のBigInt演算を使うため、64ビットパターンとその符号付き値は、通常のJavaScript数値が2^53を超えると生じる丸めなしに正確に計算されます。

その他のツール