位置番号体系は古代バビロンで初めて登場しました。 インドでは、システムは次のように機能します。
ゼロを使用した位置 10 進数の番号付け、インディアンはこの番号体系を採用しています
アラブ民族は借金をし、ヨーロッパ人は今度はアラブ民族から奪った。 ヨーロッパでは、このシステムは
それをアラビア語と呼びます。
位置システム - すべての桁の意味は、数値内の特定の桁の位置 (桁) によって異なります。
たとえば、標準の 10 進数体系は位置体系です。 453 という数字が与えられたとします。
数字の 4 は百の位を表し、数字 400 に対応します。5 - 十の位の数字は値 50 に対応します。
および 3 - 単位と値 3。桁が増加するにつれて、値も増加することが容易にわかります。
したがって、与えられた数値を合計 400+50+3=453 として書きます。
2 進数システム。
ここには 0 と 1 の 2 桁しかありません。 バイナリシステムのベース- 2番。
右端の数字はユニット数を示し、2 番目の数字はユニット数を示します。
すべての数字の中で、0 または 1 の 1 つの数字のみが可能です。
2 進数体系を使用すると、次のように表すことで任意の自然数をエンコードできます。
この数字は 0 と 1 の連続です。
例: 10112 = 1*2 3 + 0*2*2+1*2 1 +1*2 0 =1*8 + 1*2+1=1110
2 進数体系は、10 進数体系と同様に、コンピューティングでよく使用されます。
テクノロジー。 コンピューターはテキストと数値をバイナリ コードでメモリに保存し、プログラムで変換します。
スクリーン上の画像に。
2 進数の加算、減算、乗算。
2進数体系の加算テーブル:
10(転送先) 上級ランク) |
2進数系の減算表:
(先輩から借りたもの) カテゴリ)1 |
カラム追加の例 (14 10 + 5 10 = 19 10 または 1110 2 + 101 2 = 10011 2):
+ | 1 | 1 | 1 | 0 | |
1 | 0 | 1 | |||
1 | 0 | 0 | 1 | 1 |
2進数体系の九九:
列の乗算の例 (14 10 * 5 10 = 70 10 または 1110 2 * 101 2 = 1000110 2):
* | 1 | 1 | 1 | 0 | |||
1 | 0 | 1 | |||||
+ | 1 | 1 | 1 | 0 | |||
1 | 1 | 1 | 0 | ||||
= | 1 | 0 | 0 | 0 | 1 | 1 | 0 |
数値変換 二進数体系では。
2 進数から 10 進数に変換するには、次の指数表を使用します。
基数 2:
数字の 1 から始めて、各数字に 2 が掛けられます。1 の後のドットは と呼ばれます。 二進小数点.
2 進数を 10 進数に変換します。
2 進数 110001 2 があるとします。 10進数に変換するには、次のように合計として書きます。
以下のようにランク付けされます。
1 * 2 5 + 1 * 2 4 + 0 * 2 3 + 0 * 2 2 + 0 * 2 1 + 1 * 2 0 = 49
少し異なります:
1 * 32 + 1 * 16 + 0 * 8 + 0 * 4 + 0 * 2 + 1 * 1 = 49
計算を表として書くのも良いでしょう。
右から左に移動します。 すべての 2 進単位では、それに相当する単位を下の行に記述します。
小数部の 2 進数を 10 進数に変換します。
エクササイズ:数値 1011010, 101 2 を 10 進数に変換します。
指定された数値を次の形式で書きます。
1*2 6 +0*2 5 +1*2 4 +1*2 3 +0 *2 2 + 1 * 2 1 + 0 * 2 0 + 1 * 2 -1 + 0 * 2 -2 + 1 * 2 -3 = 90,625
別の録音オプション:
1*64+0*32+1*16+1*8+0*4+1*2+0*1+1*0,5+0*0,25+1*0,125 = 90,625
または表形式で:
0.25 |
0.125 |
||||||||
0.125 |
10 進数を 2 進数に変換します。
数値 19 を 2 進数に変換する必要があるとします。 次のようにして実行できます。
19 /2 = 9 残りで 1
9 /2 = 4 残りあり 1
4 /2 = 2 跡形もなく 0
2 /2 = 1 跡形もなく 0
1 /2 = 0 残りで 1
つまり、各商を 2 で割って、その余りを 2 進数表記の最後に書き込みます。 分割
商にゼロがなくなるまで続きます。 結果を右から左に書きます。 それらの。 より低い
番号 (1) が一番左になります。 したがって、2 進数表記では 19 という数字は 10011 になります。
小数 10 進数を 2 進数に変換します。
与えられた数値に整数部分が含まれる場合、小数部分とは別に変換されます。 翻訳
小数を 10 進数系から 2 進数系に変換するには、次のようにします。
- 分数には 2 進数の基数が掛けられます (2)。
- 結果として得られる製品では、部分全体が分離され、その部分が先頭の部分として扱われます。
二進法における数値の桁。
- アルゴリズムは、結果の積の小数部分がゼロであるか、次の場合に終了します。
必要な計算精度は達成されています。 それ以外の場合は計算が継続されます
製品の小数部分。
例: 小数 10 進数 206.116 を小数 2 進数に変換する必要があります。
この部分全体を翻訳すると、206 10 =11001110 2 となります。 0.116 の小数部に底 2 を掛けます。
積の全体の部分を小数点以下に置きます。
0,116 . 2 = 0,232
0,232 . 2 = 0,464
0,464 . 2 = 0,928
0,928 . 2 = 1,856
0,856 . 2 = 1,712
0,712 . 2 = 1,424
0,424 . 2 = 0,848
0,848 . 2 = 1,696
0,696 . 2 = 1,392
0,392 . 2 = 0,784
結果: 206,116 10 ≈ 11001110,0001110110 2
数値をある記数法から別の記数法に変換するためのアルゴリズム。
1. 10 進数体系から:
- 数値を翻訳された記数系の底で割ります。
- 数値の整数部分を除算したときの余りを求めます。
- 割り算の余りをすべて逆の順序で書き留めます。
2. 2 進数体系から:
- 10 進数に変換するには、次の式で底 2 の積の合計を求めます。
適切な程度の排出。
番号体系
後続の変換の便宜上、ディスクリート信号は次の処理を受けます。 コーディング(エンコードについてはセクションを参照してください) 信号コーディング)。 さらに、ほとんどのコードは数値体系に基づいており、各桁の値が数値内の位置に依存する数値形成の位置原理を使用しています。
数字を書く位置形式の例としては、私たちが使用するもの (いわゆるアラビア数字形式) があります。 たとえば、数字 123 と 321 では、数字 3 の意味は数字の位置によって決まります。最初の場合は 3 単位 (つまり、3 つだけ) を意味し、2 番目の場合は 3 を意味します。数百(つまり、300)。
次に、合計数は次の式で得られます。
どこ l –数値の桁数から 1 を引いた値、
私– 退院の順序、
メートル– 数値体系の基本、
ある 私– 0 から 0 までの任意の整数値を取る乗数 メートル-1 および対応する数値 私- 番目の番号。
たとえば、10 進数の場合 ( メートル= 10) 数値 345 の完全な値は次の式で計算されます。
3*10 2 + 4*10 1 + 5*10 0 = 345.
ローマ数字は、数形成の半位置系の一例です。したがって、数字 IX と XI では、記号 I はどちらの場合も 1 (非位置系の記号) を示しますが、記号 X (10 を表す) は 10 から減算され、右側にある場合は - が 10 に加算されます。 最初の場合、数値の完全な値は 9 で、2 番目の場合は 11 です。
現代のコンピューター サイエンスでは、主に 2 進数、16 進数、10 進数の 3 つの数値体系 (すべて位置指定) があります。
二進法離散信号をエンコードするために使用され、その消費者はコンピューター技術です。 バイナリ信号の方がハードウェア レベルで表現しやすいため、この状況は歴史的に発展してきました。 この記数法では、0 と 1 という 2 つの記号を使用して数値を表します。
16 進数体系離散信号をエンコードするために使用され、その消費者はよく訓練されたユーザー、つまりコンピューター サイエンスの分野の専門家です。 この形式は、統合オペレーティング システム シェル (たとえば、MS DOS の場合は Norton Commander を使用) を通じて要求されたファイルの内容を表します。 数値を表すために使用される文字は、0 ~ 9 の 10 進数と、A、B、C、D、E、F のラテン文字です。
10進数体系は、離散信号をエンコードするために使用され、その消費者はいわゆるエンド ユーザー、つまりコンピュータ サイエンスの分野の専門家ではありません (当然、誰でもそのような消費者として行動できます)。 数字を表すために使用される記号は、0 から 9 までの数字です。
数値が表現される記数法を区別するために、2 進数と 16 進数の指定に追加の詳細が導入されています。
2 進数の場合 - 数値 2 の形式の数値の右側にある添字、文字 B または b (2 進数)、または数値の右側にある記号 B または b。 たとえば、101000 2 = 101000 b = 101000 B = 101000B = 101000b;
16 進数の場合 - 数字 16 の形式の数字の右側にある添字、または文字 H または h (16 進数)、または数字の右側にある記号 H または h。 たとえば、3AB 16 = 3AB H = 3AB h = 3ABH = 3ABh となります。
ある数値体系から別の数値体系に数値を変換するには、特定の規則があります。 これらは、数値の形式 (整数か固有分数) によって異なります。 実数の場合、整数と固有分数の変換規則の組み合わせが使用されます。
整数の変換ルール
整数を変換した結果 いつも は整数です。
10 進数体系から 2 進数および 16 進数への変換:
a) 元の整数は、変換後の数系の底で除算されます (2 進数系に変換する場合は 2、16 進数に変換する場合は 16 で割ります)。 商と余りが得られます。
b) 結果の商が、変換が実行される数体系の底より小さい場合、除算プロセスは停止し、ステップ c) に進みます。 それ以外の場合は、ステップ a) で説明したアクションが商に対して実行されます。
c) 受け取ったすべての剰余と最後の商は、変換テーブルに従って、転送が行われている記数系の数値に変換されます。
d) 結果の数値が形成されます。その最上位の桁は取得された最後の商であり、その後の各下位の桁は、結果として得られた除算の剰余から、最後の桁から始まり最初の桁で終わるように形成されます。 したがって、結果の数値の最下位桁は除算の最初の余り、最上位桁は最後の商になります。
例1 . 数値 19 を 2 進数系に変換します。
したがって、19 = 10011 2.
例 2 。 数値 19 を 16 進数に変換します。
したがって、19 = 13 16 となります。
例 3. 数値 123 を 16 進数に変換します。
ここで、余り 11 は 16 進数 B) に変換され、その後、この数字は数値に含まれます。 したがって、123 = 7V 16.
2 進数および 16 進数体系から 10 進数体系への変換。
この場合、数値の完全な値は既知の関数を使用して計算されます。 式.
例4. 数値 13 16 を 10 進数に変換します。 我々は持っています:
13 16 = 1*16 1 + 3*16 0 = 16 + 3 = 19.
したがって、13 16 = 19 となります。
例5. 数値 10011 2 を 10 進数に変換します。 我々は持っています:
10011 2 = 1*2 4 + 0*2 3 + 0*2 2 + 1*2 1 + 1*2 0 = 16+0+0+2+1 = 19.
したがって、10011 2 = 19 となります。
a) 元の数値は、最下位桁から開始して 4 進数 (つまり 4 桁) に分割されます。 元の 2 進数の桁数が 4 の倍数でない場合は、4 の倍数になるまで左側に重要でないゼロが埋め込まれます。
b) 各四進数は、次に従って対応する 16 進数に置き換えられます。 テーブル.
2進数 |
16進数 |
例6。 数値 10011 2 を 16 進数に変換します。
元の 2 進数の桁数は 4 の倍数ではないため、桁数が 4 の倍数に達するまで、左側に意味のないゼロを補います。 我々は持っています:
に従って テーブル 0011 2 = 11 2 = 3 16 および 0001 2 = 1 2 = 1 16。
すると、10011 2 = 13 16 となります。
2進数から8進数への変換
2 進数から 16 進数に変換するアルゴリズムと同様に、元の数値のみが 3 進数に分割されます。 テーブル
2進数 |
16進数 |
a) 元の数値の各桁は、以下に従って 4 進数の 2 進数に置き換えられます。 テーブル。 テーブル内の 2 進数が 4 桁未満の場合は、4 進数の左側に重要でないゼロが埋め込まれます。
b) 結果の数値内の重要でないゼロは破棄されます。
例7。 数値 13 16 を 2 進数系に変換します。
による テーブル我々は持っています:
1 16 = 1 2、および 2 進数の重要でないゼロを埋め込んだ後、1 2 = 0001 2;
3 16 = 11 2 に、2 進数の重要でないゼロを埋め込んだ後、11 2 = 0011 2。
すると、13 16 = 00010011 2となります。 重要でないゼロを削除すると、13 16 = 10011 2 になります。
8 進数から 2 進数までは同じです。
固有分数の変換ルール
適切な分数にはゼロの整数部分があることを思い出してください。 分子は分母より小さいです。
固有分数を変換した結果 いつも 適切な分数。
10 進数から 2 進数および 16 進数への変換:
a) 元の分数に、変換後の数体系の底 (2 または 16) を掛けます。
b) 結果として得られる積では、整数部分が目的の記数体系の桁に変換されて破棄されます。これは、結果として得られる分数の最上位桁です。
c) 残りの小数部分 (これは適切な分数) に、希望する数体系の基数を再度乗算し、その後、得られた積をステップ a) および b) に従って処理します。
d) 乗算手順は、積の小数部分でゼロの結果が得られるか、結果の必要な桁数に達するまで続行されます。
e) 必要な数値が形成されます。ステップ b) で順番に破棄された数字が、結果の小数部を形成し、優先順位の降順になります。
例1 . 数値 0.847 を 2 進数システムに変換します。 小数点以下有効数字 4 桁に変換します。
したがって、0.847 = 0.1101 2.
この例では、必要な桁数の結果を受信したため、変換手順は 4 番目のステップで中断されます。 明らかに、これは多くの数字の損失につながりました。
例2。 数値 0.847 を 16 進数に変換します。 有効数字 3 桁に変換します。
この例では、転送手順も中断されます。
したがって、0.847 = 0.D8D 16.
翻訳 2 進数および 16 進数体系から 10 進数体系へ。
この場合、数値の完全な値は次のように計算されます。 式、および係数 ある 私 10 進数値を取得します
例 3 。 2進数から10進数に変換0.1101 2.
0,1101 2 = 1*2 -1 + 1*2 -2 + 0*2 -3 +1*2 -4 = 0,5 + 0,25 + 0 + 0,0625 = 0,8125.
例1) は、2 進数の分数への変換手順が中断されたことが原因で発生します。
したがって、0.1101 2 = 0.8125 となります。
例 4 。 16 進数体系から 10 進数 0、D8D 16 に変換します。
0.D8D 16 = 13*16 -1 + 8*16 -2 + 13*16 -3 = 13*0.0625 + 8*0.003906 + 13* 0.000244 = 0.84692。
取得された結果と元の数値の間の差異 (「. 例2) は、16 進数への変換手順が中断されたことが原因で発生します。
したがって、0.D8D 16 = 0.84692 となります。
2 進数から 16 進数への変換:
a) 元の分数は、右の小数点の位置から四分数に分割されます。 元の 2 進数の小数部の桁数が 4 の倍数でない場合は、4 の倍数になるまで右側に重要でないゼロが埋め込まれます。
b) 各四進数は、次に従って 16 進数に置き換えられます。 テーブル.
例5 。 2進数から16進数に変換 0.1101 2.
に従って テーブル 1101 2 = D 16。 すると、0.1101 2 = 0.D 16 となります。
例6 。 2進数から16進数に変換 0.0010101 2.
小数部の桁数は 4 の倍数ではないため、右側に意味のないゼロを追加します。
に従って テーブル 0010 2 = 10 2 = 2 16 および 1010 2 = A 16。
すると、0.0010101 2 = 0.2A 16.
16 進数から 2 進数への変換:
a) 元の分数の各桁は、以下に従って 2 進数の 4 進数に置き換えられます。 テーブル;
b) 重要でないゼロは破棄されます。
例 7 。 16進数から2進数に変換 0.2A 16.
による テーブル 2 16 = 0010 2 と A 16 = 1010 2 があります。
すると、0.2A 16 = 0.00101010 2となります。
その結果、重要でないゼロは破棄され、最終的な答えが得られます: 0.2A 16 = 0.0010101 2
分数(不等分数)の換算ルール
仮分数にはゼロ以外の小数部分があることを思い出してください。 分子が分母より大きくなります。
仮分数変換結果 いつも 仮分数。
翻訳する場合、数値の整数部分と小数部分は別々に翻訳されます。 結果は合計されます。
例1 。 10 進数体系から 16 進数 19.847 に変換します。 小数点以下有効数字3桁まで換算されます。
元の数値が整数と適切な分数の合計であると想像してみましょう。
19,847 = 19 + 0,847.
以下から 例2セクション 整数変換 19 = 13 16、および次による 例2セクション 固有分数の翻訳 0.847 = 0.D8D 16.
次に、次のようになります。
19 + 0.847 = 13 16 + 0.D8D 16 = 13.D8D 16 。
したがって、19.847 = 13.D8D 16.
単純な算術演算を実行するためのルール
2 進数と 16 進数の算術演算は、読者にとって馴染みのある 10 進数の場合と同じ規則に従います。 整数の加算、減算、乗算などの算術演算を実行する例を見てみましょう。
加算ルール
2 進数を加算するためのテーブルは次のようになります (合計値は黄色で強調表示されます)。
例1 。 折り畳み バイナリ番号は1101と11011です。
数字ごとに合計を計算するプロセスを以下に説明します。
a) ランク 1: 1 2 + 1 2 = 10 2; 0 はビット 1 に残り、1 はビット 2 に移動されます。
b) 桁 2: 0 2 + 1 2 + 1 2 = 10 2、2 番目の 1 2 は桁上げ単位です。 0 はビット 2 に残り、1 はビット 3 に移動されます。
c) 桁 3: 1 2 + 0 2 + 1 2 = 10 2、2 番目の 1 2 は桁上げ単位です。 0 はビット 3 に残り、1 はビット 4 に移動されます。
d) 桁 4: 1 2 + 1 2 + 1 2 = 11 2、ここで 3 番目の 1 2 は桁上げ単位です。 1 は桁 4 に残り、1 は桁 5 に移動します。
e) ランク 5: 1 2 + 1 2 = 10 2; ここで、2 番目の 1 2 は転送単位です。 ビット 5 には 0 が残り、ビット 6 に 1 が移動します。
したがって、1 1 0 1 2 +1 1 0 1 1 2 = 10 1 0 0 0 2 となります。
結果を確認してみましょう。 これを行うには、項と合計の完全な値を決定します (「. 整数変換):
1101 2 = 1*2 3 +1*2 2 + 0*2 1 + 1*2 0 = 8 + 4 + 1 = 13;
11011 2 = 1*2 4 + 1*2 3 + 0*2 2 + 1*2 1 + 1*2 0 = 16 + 8 + 2 + 1 = 27;
101000 2 = 1*2 5 + 0*2 4 + 1*2 3 + 0*2 2 + 0*2 1 + 0*2 0 = 32 + 8 = 40.
13 + 27 = 40 なので、2 進数の加算は正しいです。
いくつかの 16 進数を追加するためのテーブルは次のようになります (行と列の指定は用語に対応しています)。
例 2 。 折り畳み 16進数番号は1Cと7Bです。
列に用語を書き、最下位桁に 1 を割り当てて桁に番号を付けてみましょう。
指定された値を使用して結果を数値で生成するプロセス テーブル以下で説明します:
a) カテゴリ 1: C 16 + B 16 = 17 16; 7 はランク 1 のままです。 1 は桁 2 に転送されます。
b) 桁 2: 1 16 + 7 16 + 1 16 = 9 16。2 番目の 1 16 は桁上げ単位です。
したがって、1 C 16 + 7 B 16 = 9 7 16 となります。
結果を確認してみましょう。 これを行うには、項の完全な値と結果を決定します (「. 整数変換):
1C 16 = 1*16 1 + 12*16 0 = 16 + 12 = 28;
7B 16 = 7*16 1 + 11*16 0 = 112 + 11 = 123;
97 16 = 9*16 1 + 7*16 0 = 144 + 7 = 151.
28 + 123 = 151 なので、足し算は正しいです。
減算ルール
減算する場合は、前に示した加算テーブルが使用されます。
例 3 。 から減算 バイナリ数字101 バイナリ 11番。
質問のセクションでは、10 進数システムから 2 進数システムに切り替えるにはどうすればよいですか? 著者から与えられた タチアナ タチアナ最良の答えは 10 進数を 2 進数に変換する
数値 19 を 2 進数に変換する必要があるとします。 次の手順を使用できます。
19 /2 = 9 余り 1
9 /2 = 4 余り 1
4 /2 = 2、余りは 0
2 /2 = 1、余りは 0
1 /2 = 0、余り 1
したがって、各商を 2 で割って、余りとして 1 または 0 を書き込みます。被除数が 1 になるまで、割り算を続けなければなりません。余りの数字を最後から順番に入れていきます。 その結果、2 進数表記 (最後から開始) で 19 という数値 10011 が得られます。
幸運を))
からの回答 ローゼラ[教祖]
19 を 2 進数に変換するには、余りを除いて 19 で割り切れる最大の数を一番上の行で選択します。この場合、それは 16 です。(19 より前に、さらに 3 個が欠落しています) 余りを入れずに 3 で割り切れる次の数です。余りは 2 です。 (1 が余ります) 1 は余りなしで 1 で割り切れます。 16 - 2 - 1 という数字を選びました。その下に「1」を書き、残りの下に「0」を書きます。 10011 が得られます。
言葉にするとかなり面倒そうに見えます。 しかし、この表をよく見てみると、何も複雑なことはありません。 すぐに覚えられるので、翻訳にペンや紙は必要ありません。
2 進数体系では、0 と 1 の 2 つの数字のみが使用されます。つまり、2 が 2 進数体系の基本です。 (同様に、10 進法は 10 を底とします。)
2 進数体系の数値を理解する方法を学ぶには、まず、私たちに馴染みのある 10 進数体系で数値がどのように形成されるかを考えてください。
10 進数体系には 10 桁 (0 から 9) があります。 カウントが 9 に達すると、新しい桁 (10 の位) が導入され、1 の位はゼロにリセットされ、カウントが再び始まります。 19 を過ぎると、10 の位は 1 ずつ増加し、1 の位は再びゼロにリセットされます。 等々。 10の位が9に達すると、3桁目の百の位が表示されます。
2 進数体系は 10 進数体系に似ていますが、数字の形成に 0 と 1 の 2 桁だけが含まれる点が異なります。桁が限界 (つまり 1) に達するとすぐに新しい桁が表示され、古いものはゼロにリセットされます。
二進法で数えてみましょう:
0はゼロです
1 は 1 (これが排出限界です)
10は2です
11 は 3 (そしてそれがまた限界です)
100は4です
101 – 5
110 – 6
111 – 7など
数値を 2 進数から 10 進数に変換する
2 進数システムでは、値が増加するにつれて数値の長さが急速に増加することに気づくのは難しくありません。 これが何を意味するかを判断するにはどうすればよいですか: 10001001? このような数値の書き方に慣れていない人間の脳は、通常、その数値がどのくらいであるかを理解できません。 2進数を10進数に変換できれば便利です。
10 進数システムでは、あらゆる数値を単位、10、100 などの合計として表すことができます。 例えば:
1476 = 1000 + 400 + 70 + 6
1476 = 1 * 10 3 + 4 * 10 2 + 7 * 10 1 + 6 * 10 0
このエントリを注意深く見てください。 ここで、数字 1、4、7、および 6 は、数字 1476 を構成する一連の数字です。これらの数字はすべて、10 をある程度ずつ上げて順番に乗算されます。 10 は 10 進数の基数です。 10 の累乗は、桁から 1 を引いた数になります。
任意の 2 進数も同様の方法で展開できます。 ここでの基数のみが 2 になります。
10001001 = 1*2 7 + 0*2 6 + 0*2 5 + 0*2 4 + 1*2 3 + 0*2 2 + 0*2 1 + 1*2 0
1*2 7 + 0*2 6 + 0*2 5 + 0*2 4 + 1*2 3 + 0*2 2 + 0*2 1 + 1*2 0 = 128 + 0 + 0 + 0 + 8 + 0 + 0 + 1 = 137
それらの。 基数 2 の数値 10001001 は、基数 10 の数値 137 に等しいです。次のように記述できます。
10001001 2 = 137 10
なぜ 2 進数体系がこれほど一般的なのでしょうか?
実際のところ、二進数体系はコンピューター技術の言語です。 各数値は物理媒体上で何らかの方法で表現されなければなりません。 これが 10 進数システムの場合は、10 個の状態を持つことができるデバイスを作成する必要があります。 それは複雑です。 2 つの状態 (たとえば、電流があるか電流が流れていない) のみになる物理要素を生成する方が簡単です。 これが、2 進数システムに大きな注目が集まる主な理由の 1 つです。
10 進数を 2 進数に変換する
10 進数を 2 進数に変換する必要がある場合があります。 1 つの方法は、2 で割って余りから 2 進数を作成することです。 たとえば、数値 77 から 2 進数表記を取得する必要があります。
77 / 2 = 38 (余り 1)
38 / 2 = 19 (余り 0)
19 / 2 = 9 (余り 1)
9 / 2 = 4 (余り 1)
4 / 2 = 2 (余り0)
2 / 2 = 1 (余り0)
1 / 2 = 0 (余り 1)
末尾 1001101 から始めて、余りをまとめます。これは、バイナリ表現の数値 77 です。 確認しよう:
1001101 = 1*2 6 + 0*2 5 + 0*2 4 + 1*2 3 + 1*2 2 + 0*2 1 + 1*2 0 = 64 + 0 + 0 + 8 + 4 + 0 + 1 = 77
2 進数、8 進数、16 進数の数値を 10 進数に変換するのは非常に簡単です。 これを行うには、展開された形式で数値を書き留め、その値を計算する必要があります。
数値を 2 進数から 10 進数に変換します。 任意の 2 進数、たとえば 10.112 を考えてみましょう。 これを拡張形式で書いて計算してみましょう。
10.112 = 1* 21 +0*2° + 1*2-1 + 1*2-2 = 1*2 + 0*1 + 1*1/2 + 1*1/4 = 2.7510。
数値を 8 進数から 10 進数に変換します。
任意の 8 進数、たとえば 67.58 を考えてみましょう。 これを拡張形式で書いて計算してみましょう。
67.58 = 6*81 + 7*8° + 5*8-1 = 6*8 + 7*1 + 5*1/8 = 55.62510。
数値を 16 進数から 10 進数に変換します。
任意の 16 進数、たとえば 19F16 を考えてみましょう。 これを拡張形式で記述し (16 進数の F が 10 進数の 15 に対応することを思い出してください)、計算を実行してみましょう。
19F16 = 1*162 + 9*161 + F*16° = 1*256 + 9*16 + 15*1 = 41510。
10 進数から 2 進数、8 進数、および 16 進数への数値の変換はより複雑で、さまざまな方法で実行できます。 数値を 10 進法から 2 進法に変換する例を使用して、変換アルゴリズムの 1 つを考えてみましょう。 整数と固有の分数を変換するアルゴリズムが異なることを考慮する必要があります。
10 進整数を 2 進数に変換するアルゴリズム。 Acd を 10 進整数とします。 これをバイナリ係数を使用した 2 を底とする累乗の合計として書きましょう。 拡張された形式では、底の負の累乗は存在しません (数 2)。
Acd= an-1*2n-1+an-2*2n-2+…+a1*21+a0*20
最初のステップでは、数値 A を二進法の底、つまり 2 で割ります。割った商は次のようになります。
an-1*2n-2+ an-2*2n-3+…+ a1
2 番目のステップでは、再び整数商を 2 で除算します。除算の余りは a0 になります。
この除算プロセスを続行すると、n 番目のステップの後に残基のシーケンスが得られます。
a0、a1、...、an-1
それらの順序が、折りたたまれた形式で書かれた整数 2 進数の桁の逆順序と一致していることが簡単にわかります。
A2 = an-1…a1a0
したがって、必要な 2 進数を取得するには、剰余を逆の順序で書き込むだけで十分です。
整数 10 進数を 2 進数に変換するアルゴリズムは次のとおりです。
元の整数 10 進数とその結果の整数商を、除数より小さい商、つまり 2 未満になるまで、一貫して系の底 (2 で割る) で割ります。
得られた残高を逆の順序で書き留めます。
例として、10 進数 19 を 2 進数に変換し、結果を表に記録することを考えてみましょう。
その結果、2 進数 A2 = a 4 a 3a 2a1 a0 = 100112 が得られます。
適切な小数を 2 進数系に変換するためのアルゴリズム。 A を適切な小数とする。 拡張された形式では、底の正の累乗は存在しません (数 2)。
加算 = a-1*2-1+ a-2*2-2
最初のステップでは、数値 Add に二進法の基数、つまり 2 を掛けます。積は次と等しくなります。
a-1 +a-2*2-1+…
整数部分は a-1 と等しくなります
2 番目のステップでは、残りの小数部分に再度 2 を掛け、a-2 に等しい整数部分を取得します。
説明したプロセスは、乗算の結果、小数部分がゼロになるか、必要な計算精度が達成されるまで継続する必要があります。
結果として得られる数値のシーケンスが、折りたたまれた形式で書かれた小数 2 進数の桁のシーケンスと一致することに簡単に気づくことができます。
正しい小数を 2 進数に変換するアルゴリズムは次のとおりです。
- 1. 小数部がゼロになるか、必要な計算精度が達成されるまで、元の小数部と積の小数部にシステムの底を一貫して乗算します (2 倍)。
- 2. 作業の結果として得られた部分全体を順番に書き留めます。
例として、小数部 0.75 を 2 進数に変換し、結果を表に記録することを考えてみましょう。
その結果、2 進分数 A2 = 0 および -1a-2 = 0.112 が得られます。
任意の基数 p を持つ位置システムから基数 q を持つシステムへの数値の変換は、上で説明したものと同様のアルゴリズムを使用して実行されます。
10 進整数 A10 = 42410 を 16 進数系に変換する、つまり底 p = 10 の記数系から q = 16 を底とする記数系に変換する例を使用して、整数を変換するアルゴリズムを考えてみましょう。
アルゴリズムを実行するプロセスでは、すべてのアクションは元の数体系 (この場合は 10 進数) で実行する必要があり、結果の剰余は新しい数体系の数字で書き込む必要があることに注意する必要があります (この場合は 16 進数です)。
ここで、10 進数 A10 = 0.625 を 8 進法に変換する例を使用して、分数を変換するアルゴリズムを考えてみましょう。つまり、基数 p = 10 の記数法から、基数 q = 8 の記数法に変換します。
アルゴリズムを実行するプロセスでは、すべてのアクションが元の数体系 (この場合は 10 進数) で実行され、結果の剰余が新しい数体系の数字で書き込まれる必要があることに注意する必要があります。この場合は 8 進数です)。
基数が 2 の累乗 (q = 2n) である記数体系間の数値の変換は、より単純なアルゴリズムを使用して行うことができます。 このようなアルゴリズムを使用すると、2 進数 (q = 21)、8 進数 (q = 23)、および 16 進数 (q = 24) の数系の間で数値を変換できます。
数値を 2 進数から 8 進数に変換します。 2 進数を書き込むには 2 つの桁が使用されます。つまり、数値の各桁で 2 つの書き込みオプションが可能です。 指数方程式を解きます。
2 = 21。 2 は 21 なので、I = 1 ビットになります。
2 進数の各ビットには、1 ビットの記録オプション情報が含まれます。 指数方程式を解いてみましょう
8 = 2i。 8 = 23 なので、I = 3 ビットになります。 8 進数の各バリエーションには 3 ビットの情報が含まれます
したがって、2 進整数を 8 進数に変換するには、整数を右から左に 3 桁のグループに分割し、各グループを 8 進数に変換する必要があります。 最後の左側のグループに含まれる数字が 3 桁未満の場合は、左側にゼロを追加する必要があります。
この方法で 2 進数 1010012 を 8 進数に変換してみましょう: 518
変換を簡素化するために、2 進数のトライアド (3 桁のグループ) を 8 進数に変換するためのテーブルを事前に準備できます。
が 4 桁未満の場合は、右側にゼロを埋め込む必要があります。
次に、2 進 4 進数と 16 進数の間の対応を示す事前にコンパイルされたテーブルを使用して、各グループを 16 進数に変換する必要があります。
2 進整数 A2 = 1010012 を 16 進数に変換してみましょう。
分数 2 進数 (固有分数) を 8 進数に変換するには、それを左から右の 3 進数に分割し、最後の右側のグループに含まれる数字が 3 桁未満の場合は、右側にゼロを追加する必要があります。 次に、トライアドを 8 進数に置き換える必要があります。
たとえば、小数 2 進数 A2 = = 0.1101012 を 8 進数体系に変換してみましょう。
A8 = 0.658 となります。
数値を 2 進数から 16 進数に変換します。
16 進数を書き込むには、16 桁が使用されます。つまり、数値の各桁で 16 個の書き込みオプションが可能です。 指数方程式を解きます。
16 = 21。 16 = 24 なので、I = 4 ビットになります。
16 進数の各桁には 4 ビットの情報が含まれます。
したがって、2 進整数を 16 進数に変換するには、整数を右から 4 桁 (4 進数) のグループに分割し、左側の最後のグループに含まれる桁が 4 桁未満の場合は、その左側をゼロで埋めなければなりません。 分数 2 進数 (固有分数) を 16 進数に変換するには、それを左から右に 4 進数に分割する必要があります。また、右側の最後のグループに含まれる数字が 4 桁未満の場合は、右側にゼロを埋め込む必要があります。
2 進数を 8 進数または 16 進数に変換するには、整数部と小数部に分けて上記のアルゴリズムを使用して変換を実行する必要があります。
数値を 8 進数および 16 進数システムから 2 進数に変換するには、数値の桁を 2 進数のグループに変換する必要があります。 8 進数から 2 進数に変換するには、数値の各桁を 3 つの 2 進数のグループ (3 進数) に変換し、16 進数を変換する場合は 4 つの数字のグループ (4 進数) に変換する必要があります。
たとえば、8 進の小数 A8 = 0.478 を 2 進数に変換してみましょう。