二進数計算機

2進数の加算・減算・乗算・除算、10進変換、ビット演算に対応。二進数計算機は位取りと2の補数を表示します。

01 計算機

入力すると結果が更新されます。Ctrl/Cmd+Enterで主な結果をコピー。

結果

    途中式を表示

      二進数計算機は2進数の加算・減算・乗算・除算、2進数と10進数の相互変換、ビット単位の AND、OR、XOR、NOT、シフトを行います。すべての結果に10進数の確認値と桁ごとの内訳が付くので、繰り上がりと借位を手計算で照合できます。2の補数用にビット幅を指定するか、幅なしでレジスタの折り返しなしに正確な演算を行えます。

      計算はすべてブラウザ内で行います。入力内容はサーバーに送信されません。

      2進数の加算・減算・乗算・除算

      Concept diagram: 入力 leads to Add, subtract, multiply and divide… leads to 結果入力Add, subtract, multiplyand divide…結果
      2進数の加算・減算・乗算・除算.

      2進演算は10進と同じ桁ごとのルールですが、各桁は 0 か 1 のみを保持し、繰り上げのしきい値は 10 ではなく 2 です。2つの2進文字列を入力し、演算を選ぶと、計算機は2進数の結果と横に10進数の確認値を返します。ビット幅を選んでいない限り、出力から先頭の 0 は取り除きます。

      加算では、桁の合計が 2 以上のとき繰り上がります。減算では、被減数の桁が小さいとき、より上位のビットから借ります。乗算と除算は10進で習う筆算と同じ形式で、シフトと加算から構成されます。2A のような無効な桁は、2進数として不正なため即座に拒否されます。

      2進数を10進数に変換する

      Scale bar: 1 二進数 equals 1.43 十進数1 二進数1.43 十進数
      2進数を10進数に変換する.

      位置記数法では、各ビットに2の累乗を掛けて足すことで2進文字列を10進整数に変換します。最右ビットは 2⁰(値 1)、次は 2¹(値 2)、続いて 4、8、16 となります。10111 を入力すると、展開は 16 + 0 + 4 + 2 + 1 = 23 です。

      1 0 1 1 1
      │ │ │ │ └─ 1 × 2⁰ = 1
      │ │ │ └─── 1 × 2¹ = 2
      │ │ └───── 1 × 2² = 4
      │ └─────── 0 × 2³ = 0
      └───────── 1 × 2⁴ = 16
                         = 23

      計算機が受け付ける任意の2進文字列はこの方法で変換されます。4ビット単位(ニブル)に区切ると、サブネットマスクや権限ビットフィールドを声に出して読むときに位が分かりやすくなります。1010 1010 は、8桁を区切らないより読みやすいです。

      10進数を2進数に変換する

      Scale bar: 1 十進数 equals 1.4 二進数1 十進数1.4 二進数
      10進数を2進数に変換する.

      2で繰り返し割ると、余りとして2進桁が得られます。10進値を 2 で割り、余り(0 または 1)を記録し、商を再び割り、商が 0 になるまで続けます。余りを最後から先へ読むと2進形式になります。

      23 の場合:

      手順余り
      23 ÷ 2111
      11 ÷ 251
      5 ÷ 221
      2 ÷ 210
      1 ÷ 201

      余りを下から読むと 10111 になります。計算機はどちらの方向にも変換し、両形式を並べて表示するので、演算前に打ち間違いの桁に気づけます。

      10101010 と 11001100 を加算する

      Concept diagram: 入力 leads to 10101010 と 11001100 を加算する leads to 結果入力10101010 と 11001100を加算する結果
      10101010 と 11001100 を加算する.

      1010101011001100 の加算は、繰り上がり付き桁加算の作業用フィクスチャです。10進では被加数は 170 と 204、和は 374 で、2進では 101110110 です。以前のアウトラインで 110001110 とされていた記述は誤りで、以下の演算が正しい結果です。

      1 1 1 1 1 0 0 0     carries
                  1 0 1 0 1 0 1 0   170
                + 1 1 0 0 1 1 0 0   204
                -----------------
                1 0 1 1 1 0 1 1 0   374

      右から桁ごとに: 0+0=0、1+0=1、0+1=1、1+1=0 繰り上げ 1、0+0+繰り上げ=1、1+0=1、0+1=1、1+1=0 繰り上げ 1、最後の繰り上げで9ビット目が書き込まれます。9ビットの結果 101110110 は 256 + 0 + 64 + 32 + 16 + 0 + 4 + 2 + 0 = 374 と一致します。二進数計算機はすべての加算でこの繰り上げ行を表示するので、手計算と出力が一致します。

      借位を使って2進数を減算する

      Concept diagram: 入力 leads to Subtract binary numbers with… leads to 結果入力Subtract binary numberswith…結果
      借位を使って2進数を減算する.

      2進減算では、桁が 0 から 1 を借りる必要があるとき借位が起こります。上位ビットから借ると、現在の 0 は 2(2進の 10)になり、貸した側は 1 減ります。その貸し側も 0 なら、1 が見つかるまで借位が連鎖します。

      例: 1000 から 0001 を引く。

      1 0 0 0
      - 0 0 0 1
      ---------
        0 1 1 1

      最右桁は3つの 0 をまたいで借ります。連鎖が落ち着くと、借りた各桁は 1 になり、貸した最左ビットは 0 になるので、結果は 0111(10進 7)です。ビット幅を指定していて結果が負になる場合、計算機は無制限の負の大きさの代わりに2の補数の折り返しを表示できます。幅なしモードでは符号付き整数を折り返しなしで正確に保ちます。

      ビット演算を適用する

      Concept diagram: 入力 leads to bitwise operations leads to 結果入力bitwise operations結果
      ビット演算を適用する.

      ビット演算子は、文字列全体を1つの整数としてではなく、各ビットに独立して作用します。AND は両入力が 1 のときだけ 1 を返します。OR はどちらかが 1 なら 1 を返します。XOR はビットが異なるとき 1 を返します。NOT は選択した幅のすべてのビットを反転します。シフトはビットを移動し、0 または算術右シフトでは符号ビットで埋めます。

      ABANDORXOR
      00000
      01011
      10011
      11110

      ビットマスクは選択したフィールドをクリアまたは保持します。value AND mask はマスクが 0 のビットをすべて 0 にします。value OR flag はビットをセットします。value XOR toggle は選択ビットだけ反転し、残りは触りません。これらのパターンは権限フラグ、ステータスレジスタ、IPv4 アドレスにサブネットマスクを適用したネットワーク部分に現れます。

      2の補数で負の数を表す

      Concept diagram: 入力 leads to Represent negative numbers in two's… leads to 結果入力Represent negativenumbers in two's…結果
      2の補数で負の数を表す.

      2の補数は、固定幅の2進数で負の整数を格納する標準的な方法です。n ビットのレジスタでは、すべてのビットを反転して 1 を足すことで値を否定します。最上位ビットが符号ビットで、0 は非負、1 は負を表します。n ビットで表現できる範囲は −2ⁿ⁻¹ から 2ⁿ⁻¹ − 1 です。

      8 ビットでは、+5 は 00000101 です。反転すると 11111010、1 を足すと 11111011 となり、これが −5 です。0000010111111011 を足すと、レジスタからのオーバーフロー繰り上げ付きで 00000000 になり、否定の検証方法になります。幅がないと固定の符号ビットがなく2の補数は定義されないため、計算機は補数形式を表示する前に幅(8、16、32 または 64)を要求します。

      オーバーフローは、真の数学的結果が選択した幅に収まらないときに起こります。二進数計算機は折り返しを示すので、静かに切り詰められた答えを正確な答えと誤認しません。

      2進数の位取り表を読む

      Number line from 0 to 100 with the value 39 marked025507510039
      2進数の位取り表を読む.

      2進小数点の左では、位の値は1段左に進むたびに2倍になります。最初の8つを覚えれば、ほとんどのバイト単位の作業に足ります: 1、2、4、8、16、32、64、128。4 ビットでニブル、8 ビットでバイトです。多くのアーキテクチャでは 16 ビットがワード、今日の一般的なレジスタサイズは 32 と 64 です。

      ビット位置累乗
      02⁰1
      12
      24
      38
      42⁴16
      52⁵32
      62⁶64
      72⁷128

      すべて 1 のバイト 11111111 は 255 です。最上位ビットだけ 10000000 は 128 です。セットされた位の値の和として読む方が、表に慣れると桁ごとの変換より速く、計算機の展開表示はその頭の中の確認と一致します。

      実務で2進数を使う

      Concept diagram: 入力 leads to binary in practice leads to 結果入力binary in practice結果
      実務で2進数を使う.

      2進数は、ハードウェアやプロトコルがビットフィールドを公開する場所に現れます。サブネットマスクは先頭が 1 の32ビットパターンです。Unix のファイルモードは読み取り・書き込み・実行を9ビットの権限に詰め込みます。色チャネルはしばしば8ビット値です。CPU フラグとデバイスレジスタは真偽状態を単一ビットに詰めるので、マスクで隣を触らずにテストやクリアができます。

      メモリアドレスと機械命令は、16進ダンプの下ではすべて2進数です。デバッグでは、疑わしいフラグワードを2進数に変換してデータシートと並べる方が、10進数から推測するより通常速いです。計算機は2進表示と10進表示をリンクしたままにするので、その往復が正確に保たれます。

      よくある質問

      2進加算で繰り上がりはどう発生しますか?

      桁の合計が 2 以上のとき繰り上がりが現れます。各桁は 0 か 1 しか保持できないため、合計 2 では 0 を書き、次の桁へ 1 を繰り上げます。合計 3 では 1 を書き、1 を繰り上げます。しきい値が小さいだけで、10進の繰り上げと同じプロセスです。

      2進数を手計算で10進数に変換するには?

      各ビットに2の累乗を掛け、積を足します。最右ビットは 1、次は 2、4、8 と続きます。10111 では 16 + 0 + 4 + 2 + 1 = 23 です。計算機はすべての変換で同じ展開を表示します。

      10進数を手計算で2進数に変換するには?

      数を 2 で繰り返し割り、余りを集めます。各余りが右から左への次の2進桁です。商が 0 になったら止め、余りを最後から先へ読みます。10進 23 はその方法で 10111 になります。

      2の補数とは何ですか?

      2の補数は、固定ビット幅で負の整数を表す方法で、大きさのビットを反転して 1 を足します。最上位ビットが符号として働きます。その幅の中で数と2の補数を足すと 0 になり、プロセッサが減算に使う理由です。

      ビットマスクとは何ですか?

      ビットマスクは、AND、OR、XOR と組み合わせて選択ビットをクリア、セット、トグルする2進パターンです。マスクとの AND で、マスクが 1 のビットだけ残し、残りは 0 にします。OR でセット、XOR で反転します。マスクは権限、プロトコルフラグ、ハードウェアレジスタに現れます。

      左シフトと2倍の違いは何ですか?

      1 桁の左シフトは、レジスタからビットがはみ出さない限り、符号なし値を 2 倍します。1 桁の右シフトは 2 で割り、余りを捨てます。固定幅では、端からはみ出したビットは失われます。幅なしモードでは文字列が伸びます。

      NOT と否定でビット幅が重要なのはなぜですか?

      NOT はレジスタ内のすべてのビットを反転します。幅が定義されていないと反転する有限ビット集合がなく、演算は意味を持ちません。2の補数による否定も、符号ビットと折り返し動作を定義するために幅が必要です。モデルするレジスタに合わせて 8、16、32 または 64 を選びます。

      ニブルとは何ですか?

      ニブルは4ビットで、バイトの半分です。16進桁1つにきれいに対応するため、16進ダンプや色コードは4ビット単位で区切られます。ニブル内の位の値は 1、2、4、8 で、すべてセットすると 15 になります。

      二進数計算機は2進数の除算ができますか?

      はい。除算は商を2進数で返し、横に10進数の確認値を表示します。0 除算は拒否されます。特定の問題でより広い精度モードを選ばない限り、余りは整数除算のルールに従います。

      計算機は2進入力をサーバーに送信しますか?

      いいえ。すべての演算と変換はブラウザ内でローカルに実行されます。入力値はアップロードされません。文字列がメモリダンプ、鍵、内部アドレス由来のときに重要です。

      まとめ

      二進数計算機は2進演算、2の累乗による10進数との相互変換、任意のレジスタ幅付きのビット単位 AND、OR、XOR、NOT、シフトを行います。1010101011001100 を加算すると 101110110(170 + 204 = 374)となり、繰り上がりが桁ごとに表示されます。

      2の補数による否定とビット単位 NOT にはビット幅が必要です。幅なしモードでは結果を数学的に正確に保ちます。位の値、ニブル、バイトを一覧するので、マスク、権限、フラグで使う2進文字列を推測せずに読めます。

      関連計算機

      十六進数計算機 · IPサブネット計算機 · 大きな数の計算機