2進数加算・減算計算機
2進数の加算・減算をリアルタイム計算。ステップごとのキャリー伝播(繰り上がり)、2の補数による符号付き演算、論理ゲート信号、16進数への相互変換に対応。
計算結果がちょうど0のときにアサート(1に設定)
有効ワード幅の最上位ビット(MSB・符号ビット)を反映
最上位ビット(MSB)を超えて発生した符号なし桁上げ
同符号同士の演算で逆符号が生じた際の2の補数オーバーフロー
2進数の加算・減算をリアルタイム計算。ステップごとのキャリー伝播(繰り上がり)、2の補数による符号付き演算、論理ゲート信号、16進数への相互変換に対応。
計算結果がちょうど0のときにアサート(1に設定)
有効ワード幅の最上位ビット(MSB・符号ビット)を反映
最上位ビット(MSB)を超えて発生した符号なし桁上げ
同符号同士の演算で逆符号が生じた際の2の補数オーバーフロー
2進数の足し算・引き算をリアルタイム計算。筆算ステップごとの桁上げ(キャリー)、2の補数による符号付き演算、ビット論理ゲート、16進数(HEX)変換に対応。
主入力となる2進数ビット列。任意のビット長、0bプレフィックス、ニブル(4ビット)区切りに対応。加算モードでは第1の加数(被加数)、減算モードでは被演算子Bを引く対象の被減数として機能します。
第2の入力となる2進数ビット列。加算モードでは被演算子Aに加算される加数、減算モードでは2の補数演算によって反転・インクリメントされる減数として機能します。
固定ビット幅での切り捨て、符号ビット(MSB)の位置、符号なし範囲 [0, 2^N - 1] および符号付き範囲 [-2^(N-1), 2^(N-1) - 1] を定義するレジスタ境界。8ビットレジスタの場合、符号なしでは0〜255、符号付きでは-128〜+127を表現します。
算術論理演算装置(ALU)の動作を設定:標準的な符号なし/符号付き2進加算(A + B + C_in)、または2の補数によるハードウェア減算(A + (~B) + 1)を選択します。
最下位ビット(LSB / ビット0)に供給される初期キャリーインビット。通常の単独加算では0ですが、複数ワードの加算(ADC命令)を連結する場合や、2の補数反転処理を完了させる際には1を設定します。
最上位ビット(MSB)を通常の2の累乗(2^(N-1))の重みとして扱うか、符号付き2の補数表記における負の符号の重み(-2^(N-1))として扱うかを切り替えます。
2の補数演算において、CPUのハードウェアオーバーフローは「最上位ビット(MSB)へのキャリーイン」と「MSBからのキャリーアウト」が一致しない場合にのみ発生します(V = C_msb ^ C_msb_minus_1)。この1つのXORゲート判定により、正数同士の加算で誤って負数になった場合や、負数同士の加算で正数になった論理破綻を瞬時に検出できます。
2の補数減算(A - B = A + (~B + 1))を行う際、結果が0以上であれば末尾に「1」のキャリーアウトが発生します(これは符号なし演算でボロー(借り)が不要だったことを示します)。x86やARMなどの現代のCPUでは、このキャリーアウトを反転してボローフラグ(B = ~C)として解釈します。この末尾のキャリーを算術オーバーフローと混同しないよう注意してください。
基本的なリップルキャリー加算器(RCA)では、桁上げ信号がN個の全加算器を順番に伝搬するため、ゲート遅延がO(N)となり高速ALUのボトルネックになります。商用プロセッサでは、生成信号(G_i = A_i & B_i)と伝搬信号(P_i = A_i ^ B_i)を4ビットブロック単位で並列計算する桁上げ先見加算器(CLA)を採用し、桁上げ判定の遅延をO(log N)に大幅短縮しています。
Nビットの符号付き2の補数体系では、負の表現範囲が -2^(N-1) まであるのに対し、正の表現範囲は +2^(N-1) - 1 までしかありません。例えば8ビットレジスタでは -128 〜 +127 となります。ここで -128 を符号反転(0 - (-128))しようとすると、+128 は8ビットで表現できないため結果が -128 のままとなり、未処理のハードウェアオーバーフロー例外が発生します。
加算結果が選択したワード幅の最大正数を超えた場合に発生します(例: 8ビット符号付きの上限+127に対し、+120 + +15 = +135 を計算した場合)。第8ビットが0から1に反転するため、CPUは2の補数として負数(-121)と解釈します。これは典型的な符号付き整数のオーバーフローです。オーバーフローフラグ(V=1)を確認するか、レジスタ幅を8ビットから16ビットに拡張して解決してください。
「0b1011」のような基数表記、16進数(0x1A)、カンマ、不規則な空白が含まれると、ビット単位のパースが妨げられます。本ツールの入力サニタイザーは先頭の「0b」「0B」プレフィックスの自動除去と空白の正規化を行います。0と1以外の文字が検出された場合は、無効な位置を赤い警告バッジで示し、正しい2進数が入力されるまで評価を一時停止します。
符号なしNビットの加算結果が 2^N 以上になる場合(例: 8ビットで 255 + 1 = 256)、追加の (N+1) 番目のキャリーアウトビットが生成されます。固定幅のハードウェアレジスタではこのビットを保持できず、CPUのキャリーフラグ(C=1)に退避され、レジスタの値は0へラップアラウンドします。完全な9ビットの合計値を保持するには、レジスタ幅を16ビットまたは「制限なし(Unbounded)」に切り替えてください。
繰り上がり(キャリー)ビットが隣の左側の桁(インデックス i+1)に正しく伝搬しているか確認してください。2進数の加算では、1 + 1 = 10(和が0、桁上げが1)、前桁からの桁上げを含む 1 + 1 + 1 = 11(和が1、桁上げが1)となります。「筆算ステップ展開グリッド」タブを確認すると、各ビット列の直上にキャリー行(C_in)がハイライト表示され、手計算との相違箇所を容易に特定できます。
2つの2進数を筆算で足し算するには、位を右揃えにし、右端(最下位桁)から左に向かって次の4つの基本規則で各列を加算します:0 + 0 = 0、0 + 1 = 1、1 + 0 = 1、1 + 1 = 0(上の桁へ1繰り上がり)。前の桁からの繰り上がり(1)がある場合は、1 + 1 + 1 = 1(上の桁へ1繰り上がり)となります。計算した和のビットを列の下に記録し、繰り上がりビットを左隣の列の上に書き加えながら、最上位の繰り上がりまで同様に処理します。
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)は符号なし演算において最大容量(2^N - 1)を超えた桁あふれを検出するのに対し、オーバーフローフラグ(V)は符号付き2の補数演算における論理破綻を検出します。例えば8ビットレジスタ(符号なし: 0〜255、符号付き: -128〜+127)において、255 + 1 はキャリーが発生(C=1、符号なしオーバーフロー)しますが、符号付きオーバーフローは起きません。逆に +64 + +65 = +129 では、結果が許容上限の+127を超えて-127に化けるためオーバーフローフラグ(V=1)が立ちますが、キャリーフラグは0のままとなります。
符号付き8ビットの2の補数表現では、最上位ビット(ビット7)が負の重みである -128(-2^7)を担っているためです。10進数の+127は2進数で「01111111」と表現されます。これに1を加算すると「10000000」となり、符号ビットが1になって下位ビットがすべて0になります。この値を計算すると (-128 × 1) + 0 = -128 となります。8ビット符号付き整数の表現範囲が -128 〜 +127 と非対称であるため、最大正数に1を足すと最小の負数へラップアラウンドします。
半加算器は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の補数を求めるには、すべてのビットの0と1を反転(1の補数を算出)し、最下位ビットに1を加算します。実践的で素早い暗算テクニックとして「右端から左へ走査する」方法があります。末尾に続く0と最初に出現する1まではそのまま残し、その1より左側にあるすべてのビットを反転させます。例えば+6(00000110)を負数にする場合、右から見て下位「10」を維持し、上位ビットを「111110」に反転することで、11111010(8ビット符号付きの-6)が即座に求まります。
RFC 9309規格に準拠したrobots.txtの構文検証ツール。User-Agent別のクロール許可判定、Disallowパスのデバッグ、XMLサイトマップ宣言の検査をブラウザ上で即座に実行。
Markdown をクリーンで本番品質の HTML コードへ瞬時にリアルタイム変換。GFM テーブル、コードハイライト、XSS サニタイズ、リッチテキストコピー、完全なドキュメント出力を完備。
Cron式を直感的な実行スケジュールに高精度変換。タイムゾーン別の次回実行予定日時の算出、crontab構文の妥当性検証、将来のトリガー予測を完全ローカルで実行します。
GraphQL スキーマ(SDL)やクエリから TypeScript の型定義、インターフェース、Enum、リゾルバーを自動生成。設定不要・サーバー送信なしでブラウザ上で即座にコード生成できます。
HTMLやWebクリップをGitHub Flavored Markdown(GFM)に瞬時に変換。インラインスタイルを除去し、テーブルやコードブロックをクリーンなMDファイルとして出力します。
テキスト、コード、設定ファイルの差分を高速比較。左右分割やインラインでの文字単位の変更確認、空白の無視、Unified Diff(.patch)の出力に対応。