2進数加算・減算計算機

2進数加算・減算計算機

2進数の加算・減算をリアルタイム計算。ステップごとのキャリー伝播(繰り上がり)、2の補数による符号付き演算、論理ゲート信号、16進数への相互変換に対応。

プリセット読込
デュアルオペランド入力・論理制御
レジスタビット幅8ビット
ALU回路モデル:
オーバーフロー処理:
エンディアン形式:
正規化ビット列:1111 1111
10進表記: 25516進表記: 0xFF
対話型ビット操作 A:クリックしてビットを反転 (0 ↔ 1)
+加算 (A + B)
正規化ビット列:0000 0001
10進表記: 116進表記: 0x01
対話型ビット操作 B:クリックしてビットを反転 (0 ↔ 1)
算術演算の確定出力8ビット
2進数ビットストリーム (4ビット区切り)
0000 0000
16進数 (0x)
0x00
符号なし10進数
0
符号付き10進 (2の補数)
0
ALU回路アーキテクチャ・伝播遅延Ripple-Carry Adder (RCA - Linear O(N))
伝播遅延: 192 ps
回路規模(ゲート数): ~224 ゲート
CPU ALU ステータスフラグEFLAGS / CCR
ゼロフラグ (Z)HIGH (1)

計算結果がちょうど0のときにアサート(1に設定)

符号フラグ (N)LOW (0)

有効ワード幅の最上位ビット(MSB・符号ビット)を反映

キャリーフラグ (C)HIGH (1)

最上位ビット(MSB)を超えて発生した符号なし桁上げ

オーバーフローフラグ (V)LOW (0)

同符号同士の演算で逆符号が生じた際の2の補数オーバーフロー

加算器シリコン回路シミュレータ
キャリー入力 (C_in)和 (S)
ステージ 7MSBPGA=1B=0C=1S=0ステージ 6ビット 6PGA=1B=0C=1S=0ステージ 5ビット 5PGA=1B=0C=1S=0ステージ 4ビット 4PGA=1B=0C=1S=0ステージ 3ビット 3PGA=1B=0C=1S=0ステージ 2ビット 2PGA=1B=0C=1S=0ステージ 1ビット 1PGA=1B=0C=1S=0ステージ 0LSBPGA=1B=1C=0S=0C_out=1
動作ワード幅8ビット アーキテクチャ
アクティブなALUフラグ2 点灯 / 合計4フラグ
ALU伝播遅延192 ps (RCA)
技術リファレンス・アーキテクチャガイド

2進数足し算・引き算計算機 — 技術リファレンス

2進数の足し算・引き算をリアルタイム計算。筆算ステップごとの桁上げ(キャリー)、2の補数による符号付き演算、ビット論理ゲート、16進数(HEX)変換に対応。

2進数足し算・引き算計算機 — 技術リファレンス — クライアントサイド完全ローカル実行アーキテクチャ図
2進数足し算・引き算計算機 — 技術リファレンス — クライアントサイド完全ローカル実行アーキテクチャ図

主要パラメータと設定項目

被演算子 A(被加数 / 被減数)2進数ビット列 [0-1]

主入力となる2進数ビット列。任意のビット長、0bプレフィックス、ニブル(4ビット)区切りに対応。加算モードでは第1の加数(被加数)、減算モードでは被演算子Bを引く対象の被減数として機能します。

初期値: 10110100
被演算子 B(加数 / 減数)2進数ビット列 [0-1]

第2の入力となる2進数ビット列。加算モードでは被演算子Aに加算される加数、減算モードでは2の補数演算によって反転・インクリメントされる減数として機能します。

初期値: 01001101
レジスタ幅(ビット長)ハードウェアレジスタ容量(4, 8, 16, 32, 64ビット, 制限なし)

固定ビット幅での切り捨て、符号ビット(MSB)の位置、符号なし範囲 [0, 2^N - 1] および符号付き範囲 [-2^(N-1), 2^(N-1) - 1] を定義するレジスタ境界。8ビットレジスタの場合、符号なしでは0〜255、符号付きでは-128〜+127を表現します。

初期値: 8-bit
演算モードALU演算選択(加算 / 減算)

算術論理演算装置(ALU)の動作を設定:標準的な符号なし/符号付き2進加算(A + B + C_in)、または2の補数によるハードウェア減算(A + (~B) + 1)を選択します。

初期値: add
初期入力桁上げ(C_in)1ビット桁上げ状態(0 または 1)

最下位ビット(LSB / ビット0)に供給される初期キャリーインビット。通常の単独加算では0ですが、複数ワードの加算(ADC命令)を連結する場合や、2の補数反転処理を完了させる際には1を設定します。

初期値: 0
数値表現形式整数符号エンコーディング(符号なし / 符号付き2の補数)

最上位ビット(MSB)を通常の2の累乗(2^(N-1))の重みとして扱うか、符号付き2の補数表記における負の符号の重み(-2^(N-1))として扱うかを切り替えます。

初期値: unsigned

現場のベストプラクティス・実践Tips

最上位2つのキャリーのXORで符号付きオーバーフローを瞬時に判定

2の補数演算において、CPUのハードウェアオーバーフローは「最上位ビット(MSB)へのキャリーイン」と「MSBからのキャリーアウト」が一致しない場合にのみ発生します(V = C_msb ^ C_msb_minus_1)。この1つのXORゲート判定により、正数同士の加算で誤って負数になった場合や、負数同士の加算で正数になった論理破綻を瞬時に検出できます。

2の補数による減算では末尾のキャリーアウトを破棄

2の補数減算(A - B = A + (~B + 1))を行う際、結果が0以上であれば末尾に「1」のキャリーアウトが発生します(これは符号なし演算でボロー(借り)が不要だったことを示します)。x86やARMなどの現代のCPUでは、このキャリーアウトを反転してボローフラグ(B = ~C)として解釈します。この末尾のキャリーを算術オーバーフローと混同しないよう注意してください。

リップルキャリー加算器と桁上げ先見加算器(CLA)の遅延差

基本的なリップルキャリー加算器(RCA)では、桁上げ信号がN個の全加算器を順番に伝搬するため、ゲート遅延がO(N)となり高速ALUのボトルネックになります。商用プロセッサでは、生成信号(G_i = A_i & B_i)と伝搬信号(P_i = A_i ^ B_i)を4ビットブロック単位で並列計算する桁上げ先見加算器(CLA)を採用し、桁上げ判定の遅延をO(log N)に大幅短縮しています。

2の補数表現における負のダイナミックレンジの非対称性に注意

Nビットの符号付き2の補数体系では、負の表現範囲が -2^(N-1) まであるのに対し、正の表現範囲は +2^(N-1) - 1 までしかありません。例えば8ビットレジスタでは -128 〜 +127 となります。ここで -128 を符号反転(0 - (-128))しようとすると、+128 は8ビットで表現できないため結果が -128 のままとなり、未処理のハードウェアオーバーフロー例外が発生します。

よくある落とし穴とトラブルシューティング

⚠️正の符号付き2進数同士を加算したのに結果が予期せず負数になる

加算結果が選択したワード幅の最大正数を超えた場合に発生します(例: 8ビット符号付きの上限+127に対し、+120 + +15 = +135 を計算した場合)。第8ビットが0から1に反転するため、CPUは2の補数として負数(-121)と解釈します。これは典型的な符号付き整数のオーバーフローです。オーバーフローフラグ(V=1)を確認するか、レジスタ幅を8ビットから16ビットに拡張して解決してください。

⚠️入力した2進数に2進数以外の文字、スペース、先頭プレフィックスが含まれている

「0b1011」のような基数表記、16進数(0x1A)、カンマ、不規則な空白が含まれると、ビット単位のパースが妨げられます。本ツールの入力サニタイザーは先頭の「0b」「0B」プレフィックスの自動除去と空白の正規化を行います。0と1以外の文字が検出された場合は、無効な位置を赤い警告バッジで示し、正しい2進数が入力されるまで評価を一時停止します。

⚠️計算結果のビット長が選択したレジスタサイズを超過する(符号なしラップアラウンド)

符号なしNビットの加算結果が 2^N 以上になる場合(例: 8ビットで 255 + 1 = 256)、追加の (N+1) 番目のキャリーアウトビットが生成されます。固定幅のハードウェアレジスタではこのビットを保持できず、CPUのキャリーフラグ(C=1)に退避され、レジスタの値は0へラップアラウンドします。完全な9ビットの合計値を保持するには、レジスタ幅を16ビットまたは「制限なし(Unbounded)」に切り替えてください。

⚠️筆算の桁上げ加算結果が10進数の手計算結果と一致しない

繰り上がり(キャリー)ビットが隣の左側の桁(インデックス i+1)に正しく伝搬しているか確認してください。2進数の加算では、1 + 1 = 10(和が0、桁上げが1)、前桁からの桁上げを含む 1 + 1 + 1 = 11(和が1、桁上げが1)となります。「筆算ステップ展開グリッド」タブを確認すると、各ビット列の直上にキャリー行(C_in)がハイライト表示され、手計算との相違箇所を容易に特定できます。

よくある質問 (FAQ)

2進数の足し算はどのような手順で筆算計算しますか?▼

2つの2進数を筆算で足し算するには、位を右揃えにし、右端(最下位桁)から左に向かって次の4つの基本規則で各列を加算します:0 + 0 = 0、0 + 1 = 1、1 + 0 = 1、1 + 1 = 0(上の桁へ1繰り上がり)。前の桁からの繰り上がり(1)がある場合は、1 + 1 + 1 = 1(上の桁へ1繰り上がり)となります。計算した和のビットを列の下に記録し、繰り上がりビットを左隣の列の上に書き加えながら、最上位の繰り上がりまで同様に処理します。

2の補数を使った引き算はなぜ加算処理で行えるのですか?▼

2の補数による減算は、代数恒等式 A - B = A + (~B + 1) を利用して減算を加算に変換する仕組みです。第1ステップとして減数Bの全ビットを反転(0を1に、1を0に変換して1の補数を生成)します。第2ステップでその反転値に1を加算して「2の補数(負数表現)」を作ります。第3ステップで被減数Aに通常の2進加算で足し合わせ、最上位からあふれたキャリーアウトビットを破棄します。例えば 7 (0111) - 3 (0011) の場合、0111 + 1101 = 10100 となり、5ビット目の桁あふれを破棄することで 0100(10進数の4)が得られます。

キャリーフラグ(C)とオーバーフローフラグ(V)の違いは何ですか?▼

キャリーフラグ(C)は符号なし演算において最大容量(2^N - 1)を超えた桁あふれを検出するのに対し、オーバーフローフラグ(V)は符号付き2の補数演算における論理破綻を検出します。例えば8ビットレジスタ(符号なし: 0〜255、符号付き: -128〜+127)において、255 + 1 はキャリーが発生(C=1、符号なしオーバーフロー)しますが、符号付きオーバーフローは起きません。逆に +64 + +65 = +129 では、結果が許容上限の+127を超えて-127に化けるためオーバーフローフラグ(V=1)が立ちますが、キャリーフラグは0のままとなります。

符号付き8ビット演算において「127 + 1」がなぜ「-128」になるのですか?▼

符号付き8ビットの2の補数表現では、最上位ビット(ビット7)が負の重みである -128(-2^7)を担っているためです。10進数の+127は2進数で「01111111」と表現されます。これに1を加算すると「10000000」となり、符号ビットが1になって下位ビットがすべて0になります。この値を計算すると (-128 × 1) + 0 = -128 となります。8ビット符号付き整数の表現範囲が -128 〜 +127 と非対称であるため、最大正数に1を足すと最小の負数へラップアラウンドします。

半加算器(Half Adder)と全加算器(Full Adder)の回路的な違いは何ですか?▼

半加算器は2つの1ビット入力(AとB)から和(S = A XOR B)と桁上げ(C = A AND B)を出力しますが、下位桁からの桁上げ(キャリーイン)を受け取ることができません。一方、全加算器は入力A、Bに加えて下位からのキャリーイン(C_in)の計3入力を処理できます。出力は和(S = A XOR B XOR C_in)と桁上げ出力(C_out = (A AND B) OR (C_in AND (A XOR B)))となり、全加算器を直列に連結することで複数ビットの2進数加算が可能になります。

負の2進数を表す「2の補数」はどのように求めますか?▼

ある2進数の2の補数を求めるには、すべてのビットの0と1を反転(1の補数を算出)し、最下位ビットに1を加算します。実践的で素早い暗算テクニックとして「右端から左へ走査する」方法があります。末尾に続く0と最初に出現する1まではそのまま残し、その1より左側にあるすべてのビットを反転させます。例えば+6(00000110)を負数にする場合、右から見て下位「10」を維持し、上位ビットを「111110」に反転することで、11111010(8ビット符号付きの-6)が即座に求まります。

関連開発者ツール

全ツール一覧 →
robots.txt 構文検証開発者ツール

RFC 9309規格に準拠したrobots.txtの構文検証ツール。User-Agent別のクロール許可判定、Disallowパスのデバッグ、XMLサイトマップ宣言の検査をブラウザ上で即座に実行。

ツールを開く→
Markdown HTML 変換開発者ツール

Markdown をクリーンで本番品質の HTML コードへ瞬時にリアルタイム変換。GFM テーブル、コードハイライト、XSS サニタイズ、リッチテキストコピー、完全なドキュメント出力を完備。

ツールを開く→
Cron式パーサー・構文検証開発者ツール

Cron式を直感的な実行スケジュールに高精度変換。タイムゾーン別の次回実行予定日時の算出、crontab構文の妥当性検証、将来のトリガー予測を完全ローカルで実行します。

ツールを開く→
GraphQL TS型生成開発者ツール

GraphQL スキーマ(SDL)やクエリから TypeScript の型定義、インターフェース、Enum、リゾルバーを自動生成。設定不要・サーバー送信なしでブラウザ上で即座にコード生成できます。

ツールを開く→
HTML Markdown変換開発者ツール

HTMLやWebクリップをGitHub Flavored Markdown(GFM)に瞬時に変換。インラインスタイルを除去し、テーブルやコードブロックをクリーンなMDファイルとして出力します。

ツールを開く→
テキスト差分比較ツール開発者ツール

テキスト、コード、設定ファイルの差分を高速比較。左右分割やインラインでの文字単位の変更確認、空白の無視、Unified Diff(.patch)の出力に対応。

ツールを開く→