2の補数計算機 10進数、2進数、1の補数、2の補数間の変換をサポート

変換結果

2の補数計算機:機能紹介

10進数と2進数の相互変換、1の補数・2の補数の計算、補数から元の2進数への逆変換をブラウザ上で即座に行える無料オンラインツールです。符号付き整数を完全サポートしており、コンピューターアーキテクチャの学習や低レベルプログラミングのデバッグに役立ちます。

主な機能一覧

  • 10進数 → 2進数変換: 正負の符号付き整数に対応
  • 2進数 → 10進数変換: 符号付き・符号なし両方の解釈結果を表示
  • 1の補数計算: 全ビットを反転(0↔1)
  • 2の補数計算: 1の補数+1。現代のすべてのCPUが採用する負数表現方式
  • 補数の逆変換: 補数から元の2進数を自動復元
  • ビット長選択: 8・16・32・64ビットに対応

活用シーン — こんな方にお勧めです

  • 情報工学・電子工学の学生: コンピューターアーキテクチャの授業でのレポート確認、試験対策
  • C/C++・組み込みエンジニア: int8_tint16_tint32_tのビット演算デバッグ、オーバーフロー検証
  • Javaエンジニア: Javaの整数型はすべて符号付き(2の補数)のため、ビットマスクや符号拡張の挙動を視覚的に確認
  • Pythonエンジニア: ~x演算子の結果確認、任意精度整数のビット表現の理解
  • FPGAおよびデジタル回路設計者: ALUへの入力値を2進数で確認し、オーバーフロー発生条件を検証

使い方ガイド(ステップバイステップ)

  1. 変換の方向を選択します:「10進数→2進数」または「2進数→10進数」タブをクリック
  2. 入力フィールドに数値を入力します(負の10進数はマイナス符号付きで入力)
  3. ビット長を選択します:8・16・32・64ビットのいずれか
  4. 変換結果が即座に表示されます:符号なし2進数、1の補数、2の補数
  5. 「クリップボードにコピー」ボタンでコードへそのまま貼り付けできます

2の補数とは何か?

コンピューターサイエンスにおいて、2の補数(Two's Complement)は符号付き整数を2進数で表現するための世界標準方式です。加算と減算を同一のハードウェア回路で処理できるため、CPUの設計が大幅に簡略化されます。

1の補数の求め方: 全ビットを反転します。例:00001010(+10)→ 11110101

2の補数の求め方: 1の補数に1を加算します。例:11110101 + 1 = 11110110(これが8ビットでの−10の表現)

参考:2の補数 — Wikipedia

活用のヒント

  • 各ビット長の表現範囲:8ビット(−128〜+127)、16ビット(−32,768〜+32,767)、32ビット(−2,147,483,648〜+2,147,483,647)
  • オーバーフローが発生すると警告メッセージが表示されます。より大きなビット長を選択してください。
  • Cでは~xが1の補数、-xが2の補数(符号反転)を返します。
  • JavaではInteger.toBinaryString(x)で2進数文字列を取得できますが、負数の場合は内部的に2の補数表現で返されます。

よくある質問(FAQ)

  • Q:このツールは無料ですか?
    A:はい、完全無料で会員登録も不要です。
  • Q:負の2進数を10進数に変換するにはどうすればよいですか?
    A:「2進数→10進数」タブで2進数を入力し、ビット長を指定すると、符号なし・1の補数・2の補数それぞれの解釈結果が表示されます。
  • Q:64ビットより大きい数値は扱えますか?
    A:現在は最大64ビットまでの対応です。それ以上はJavaのBigIntegerやPythonの標準整数型をご利用ください。
  • Q:1の補数と2の補数の違いは何ですか?
    A:1の補数はビットを反転するだけのため、ゼロの表現が0000000011111111の2つ存在します。2の補数はさらに1を加えることでゼロの表現を一意にし、演算の整合性を保ちます。現代のコンピューターはすべて2の補数を使用しています。
  • Q:Pythonで2の補数を計算する方法は?
    A:Pythonでは(~x) & 0xFF(8ビット)のようにビットマスクを使います。このツールで先に結果を確認してからコードに反映すると効率的です。

各プログラミング言語での10進数から2進数への変換方法

JavaInteger.toBinaryString(decimal_number)
JavaScriptlet binary = decimal_number.toString(2);
Microsoft .NET / C#string binary = Convert.ToString(decimal_number, 2);
Pythonbinary = bin(decimal_number)[2:]
Rubybinary = decimal_number.to_s(2)
Go import strconv
binary := strconv.FormatInt(decimal_number, 2)