二項演算について詳しく解説

2 進数演算は、基数 2 (2 進法) で計算を実行する方法です。

これはコンピューターサイエンスにおいて不可欠な概念です。実際、コンピュータプロセッサは何百万ものトランジスタ(電子回路上にプリントされている)で構成されており、各トランジスタはビット0(「電流が流れない」)と1(「電流が流れる」)のみを管理します。

したがって、コンピューターの計算は、バイト (8 つの 2 進数で構成される) と呼ばれる 0 と 1 のパケットに対する一連の操作にすぎません。

バイナリエンコーディング

バイナリ表現に基づいたさまざまな数値体系があります。

位置の番号付け

最も一般的なエンコードは、私たちが毎日使用する 10 進数の位置番号付けに相当する 2 進数です。

正の整数の表現

数値の 2 進表現を見つけるには、それを 2 のべき乗の合計に分解します。たとえば、10 進表現が 59 である数値の場合は次のようになります。

59 = 1 ×32 + 1 ×16 + 1 ×8 + 0 ×4 + 1 ×2 + 1 ×1
59 = 1 ×2 5 + 1 ×2 4 + 1 ×2 3 + 0 ×2 2 + 1 ×2 1 + 1 ×2 0
59 = 111011 (バイナリ)

n ビットを使用すると、このシステムでは 0 から 2 n -1 までの数値を表現できます。したがって、2 進数で 1023 (2 10 -1) までは 10 本の指で数えることができます。各指にバイナリ値を割り当てるだけです (指を曲げることで表すことができます)。

Robertv の場合、10 本の指を使用すると、最大 1023 まで数えることができます。実際、各指が上げられた指の規則に従って 2 の累乗を表す場合、2 の累乗は保持されます (2 進数では 1)。指を折りたたんだ場合、2 のべき乗は保持されません (2 進数では 0)。

それから指と。値の入力
2 の数値の
10進数
右手の小指を上げる 2^0 1
環状 = 2^1 + 2
メジャー = 2^2 + 4
インデックス = 2^3 + 8
インチ = 2^4 + 16
左手の親指を上げた 2^5 + 32
インデックス = 2^6 + 64
メジャー = 2^7 + 128
環状 = 2^8 + 256
ピンキー = 2^9 + 512
-------
合計 =1,023
(ちなみに2^10 =1,024)

これにより式が確認されます

2^10-1=1,024-1
=1,023

10 本の指を使用すると、2^0 から 2^9 までの 2 の最初の 10 乗、つまり 2 の最初の 10 乗の合計を考慮できることに注意してください。

負の整数の表現

整数の表現を完成させるには、負の整数を書き込むことができなければなりません。これを行うには、表現の先頭に符号ビットを追加します。符号ビット 0 は正の値を示し、符号ビットが 1 に設定されている場合は負の値を示します。このルールにより、正の整数を表すシステムとの一貫性を保つことができます。つまり、各値の先頭に 0 を追加するだけです。

補数

この非常に単純なコーディングは、バイナリ値を構成する各ビットの値を反転することで構成されます。

たとえば、-5 を取得するには:

0101 10 進数値 5
1010 1の補数

このようなシステムの問題は、指定されたビット数に対して値 0 の表現が常に 2 つ存在することです。

2の補数

この欠点を克服するために、2 の補数表現を導入しました。これは、値の 1 の補数を作成し、その結果に 1 を加算することで構成されます。

たとえば、-5 を取得するには:

0101 5 をバイナリでコーディング
1010 1の補数
1011 1 を追加します: 2 の補数での -5 の表現

このコーディングには、正の数と負の数を特別に区別する必要がないという利点があり、特に、テスト回路に理解させる必要がある「+0」と「-0」を備えた古いコンピュータ (Control Data 6600) の問題を回避できます。同じ番号だったとは!ここでは、4 ビットの 2 の補数で行われた -5 と +7 の加算を示します。

-5 1011
+7 0111
____
2 (1) 0010 (控除を「無視」します)

n ビットを使用すると、このシステムは -2 n-1から 2 n-1 -1 までの数値を表現できます。

二項演算について詳しく解説

グレイコードまたは反射バイナリ

このコーディングでは、数値が 1 増加するときに一度に 1 ビットのみ変更できます。コードの名前は、1953 年にこのコードの特許を申請したアメリカ人技術者フランク グレイに由来しています。

古典的なバイナリコーディング:

0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111

グレーまたは反射バイナリ コーディング:

0 0000
1 0001
2 0011
3 0010
4 0110
5 0111
6 0101
7 0100

ある行から次の行に移動するには、可能な限り右端のビットを反転して、新しい数値を導き出します。

反映されたバイナリ コード名は、ある数値から次の数値に移行するときにどのビットを反転するかを選択するためのより便利な構築方法に由来しています。

  • 開始コードを選択します。ゼロはコード化された 0、1コード化された 1 です。
  • 次に、追加のビットが必要になるたびに、すでに取得されている数値を対称化します (鏡に映ったように)。
  • 最後に、「古い」数値の先頭に 0 を追加し、新しい数値の先頭に 1 を追加します。

例 :

0 0 0 .0 0 00 0 .00 0 000
1 1 1 .1 1 01 1 .01 1 001
ミラー->------ 2 .11 2 011
2 .1 2 11 3 .10 3 010
3 .0 3 10 -------
4 .10 4 110
5 .11 5 111
6 .01 6 101
7.00 7.100

このコードは主に、光学定規などの位置センサーに使用されます。実際、標準のバイナリ コードを使用すると、位置1 (01) から2 (10) に移行するとき (2 ビットの同時並べ替え)、 3 (11) または0 (00) が一時的に通過するリスクがあります。グレイのコードはこれを回避します。

最大値 (3 ビットの7 ) から0への移行も、1 ビットのみを変更することで行われることに注意してください。これにより、たとえば、風見鶏の方向などの角度をエンコードできます: 0=、1=北東、2=、… 7=北西北西からへの遷移も、1 ビットを変更するだけで問題なく実行されます。 「コーディングホイール」を参照してください。

機械式マウスの軸の光信号のデコードは、2 ビット グレイ コード デコードです (この場合、取得したいのはデコードされた値ではなく、デコードされたの ±1 mod 4 の遷移であるため、差分デコードです)。

論理回路を設計する際に使用されるカルノー表にもグレイコードが使用されています。

2進化10進数( BCD

このコーディングは、10 進数の各桁を 4 ビットで表すことで構成されます。

1994 = 0001 1001 1001 0100
1×1000 + 9×100 + 9×10 + 4×1

10 進数表記により変換が簡単になる利点があります。

n ビット (n は 4 の倍数) を使用すると、0 から 10 n/4 -1 までの数値を表すことができます。または、およそ 0 ~ 1.778 n -1 の間です。 BCD は冗長コードであり、実際には特定の組み合わせ (たとえば 1111 など) は使用されません。

この表現は、整数演算で回路のサイズを超える大きな数値を処理し、浮動小数点に頼る必要がある場合に発生する丸めの累積という迷惑な問題をすべて構造的に回避します。ただし、BCD よりも効率的なコーディングを使用して、数値を任意の精度で操作することは可能です。

BCD コーディングには次のようなバリエーションがあります。

  • Aiken コード。0、1、2、3、4 は BCD のようにコード化され、5、6、7、8、9 は 1011 から 1111 までコード化されます。1 と 0 を並べ替えることで 9 の補数を取得できます。 。
  • バイナリコーディングの超過 3。これは、コーディングされる数字+ 3 を表すことで構成されます。
二項演算について詳しく解説

アプリケーション

情報理論

情報理論では、ビットを情報の測定単位として使用できます。理論自体は、それが使用する量の表現には無関心です。

論理

古典論理は二価論理であり、命題は真か偽のいずれかです。したがって、命題の真偽を 2 進数で表すことが可能です。たとえば、ブール代数を使用して二項算術の演算をモデル化できます。

ブール代数は、真理値 0 と 1 のみを含む確率を使用する非常に特殊なケースを表します。コックス・ジェインズの定理を参照してください。

二項演算について詳しく解説

コンピュータサイエンス

バイナリは、TTL や CMOS などのスイッチングコンポーネントの動作をモデル化できるため、コンピューティングで使用されます。トランジスタの端子における電圧しきい値の存在は、この電圧の正確な値を無視して、0 または 1 を表します。たとえば、数値 0 は 0.5V 以内の電圧がないことを意味し、数値 1 は電圧が存在しないことを意味します。 0.5V以上でその存在を示します。この許容範囲により、 (過熱を除けば)問題なくマイクロプロセッサのレートを数ギガヘルツに達する値まで押し上げることが可能になります。 3 つ以上の安定状態 (0 または 0.5 V 以上) を持つ電子部品を作成する方法が技術的にわからないため、(2 価) ロジック、つまり2 値システムのみを使用します。

コンピューティングでは、バイナリ表現を使用すると、ビットを明確に操作できます。バイナリの各桁が 1 ビットに対応します。バイナリ表現では (非常に小さい数値であっても) 多くの桁を使用する必要があるため、可読性に重大な問題が発生し、プログラマにとっては転記エラーのリスクが生じるため、8 進表現が好まれる場合もあれば、16 進表現が好まれる場合もあります。現在のほぼすべてのマイクロプロセッサは 8、16、32、または 64 ビットのワードで動作します。16 進表記を使用すると、情報を 4 ビットのパケットで操作できます (これと比較して、最初のミニコンピュータ DEC が 12 ビットまたは 12 ビットで登場した当時は、8 進表記の 3 ビットが一般的でした)。 36ビット)。

  • 63 (10) =111111 (2) =77 (8) =3F (16)
  • 64 (10) = 1000000 (2) = 100 (8) = 40 (16)
  • 255 (10) = 11111111 (2) = 377 (8) = FF (16)
  • 256 (10) = 100000000 (2) = 400 (8) = 100 (16)
  1. Binêre getallestelsel – afrikaans
  2. نظام عد ثنائي – arabe
  3. Sistema binariu – asturien
  4. İkili say sistemi – azerbaïdjanais
  5. ایکی‌لی سایی سیستمی – South Azerbaijani
  6. Икеле иҫәпләү системаһы – bachkir

二項演算について詳しく解説・関連動画

サイエンス・ハブ

知識の扉を開け、世界を変える。