第4章
数体系
導入
データ復旧プログラミングやその他のディスク トラブルシューティング プログラミングでは、拡張 MBR の特定の場所を CHS (シリンダー、ヘッド、セクター) の観点から計算するなど、単一のタスクまたはジョブのごく一部を実行するために、異なる種類の数値システムを同時に操作する必要があることがよくあります。これらの場所は、操作全体を通じてプログラマーをガイドします。
おそらく、ほとんどの新しいプログラマーは、2 進数と 16 進数のシステムの使用が必須であるアセンブリ言語でシステム プログラミングを学習しようとするときに、異なるタイプの数値システムを相互に変換するときに問題や混乱に直面します。
この章では、2進数、10進数、16進数のシステム、ビット、ニブル、バイト、ワード、ダブルワードなどの変換などの2進データの構成など、多くの重要な概念と、その他多くの関連する数値システムのトピックについて説明します。
現代のコンピュータ システムのほとんどは、数値を 10 進数で表すのではなく、通常は 2 進数または 2 の補数表記を使用します。
プログラミングでよく使われる数値体系には、2進数、8進数、10進数、16進数の4つがあります。しかし、ほとんどの場合、2進数、10進数、16進数のシステムに遭遇するでしょう。これらの数値体系は基数によって異なります。
それぞれの数値体系には、独自の基本数と表現記号があります。これらの 4 つの数字を次の表に示します。
番号システムの名前 |
基本番号 |
記号は以下を表す |
バイナリ |
2 |
B |
八進数 |
8 |
Q または O |
小数点 |
10 |
Dかどうか |
16進数 |
16 |
時間 |
十進法
10 進数では 10 を基数とし、0 から 9 までの数字が含まれます。これは私たちが日常生活で計算に使用する一般的な数値システムなので、混乱しないでください。各ポジションのパワー加重値は次のようになります。
したがって、10 進数 218 があり、それを上記の方法で表現したい場合、数値 218 は次のように表現されます。
2 * 102 + 1 * 101 + 8 * 100
= 2 * 100 + 1 * 10 + 8 * 1
= 200 + 10 + 8
= 218
それでは、分数小数の例を見てみましょう。 821,128 という数字があるとします。小数点の左側の各桁は 0 から 9 までの値を表し、10 の累乗は数値内の位置 (0 から始まる) によって表されます。
小数点の右側に表示される数字は、0 から 9 までの値に 10 の負の累乗を乗じた値を表します。方法を見てみましょう:
8*102+2*101+1*100+1*10-1+2*10-2+8*10-3
= 8 * 100 + 2 * 10 + 1 * 1 + 1 * 0,1 + 2 * 0,01 + 8 * 0,001
= 800 + 20 + 1 + 0.1 + 0.02 + 0.008
= 821,128
二進数システム
今日、ほとんどの現代のコンピュータ システムはバイナリ ロジックを使用して動作します。コンピュータは、 0 と 1 を使用して OFF または ON のいずれかを示す 2 つの電圧レベルを使用して値を表します。たとえば、0 V の電圧は通常、論理 0 で表され、+3.3 V または +5 V の電圧は論理 1 で表されます。したがって、2 つのレベルを使用すると、正確に 2 つの異なる値を表すことができます。これらは任意の 2 つの異なる値にすることができますが、慣例により 0 と 1 の値を使用します。
コンピュータが使用する論理レベルと 2 進数システムで使用される 2 つの数字の間には対応関係があるため、コンピュータが 2 進数システムを使用するのは当然のことです。
2 進数システムは 10 進数システムと同じように機能しますが、2 進数システムでは基数が 2 で、数字は 0 と 1 のみを使用し、他の数字を使用すると、その数字は無効な 2 進数になります。
各項目の加重値は次のように表示されます。
次の表は、2 進数と 10 進数を比較した表現を示しています。
10進数 |
数値の2進表現 |
0 |
0000 |
1 |
0001 |
2 |
0010 |
3 |
0011 |
4 |
0100 |
5 |
0101 |
6 |
0110 |
7 |
0111 |
8 |
1000 |
9 |
1001 |
10 |
1010 |
11 |
1011 |
12 |
1100 |
13 |
1101 |
14 |
1110 |
15 |
1111 |
通常、小数の場合、大きな数字を読みやすくするために、小数点 3 桁ごとにコンマで区切られます。たとえば、840349823 という数字よりも、840,349,823 という数字の方がはるかに読みやすいです。
同じアイデアからインスピレーションを得て、2 進数にも同様の規則があり、2 進数のほうが読みやすくなるかもしれませんが、2 進数の場合は、小数点の左側の最下位桁から始めて 4 桁ごとにスペースを追加します。
たとえば、バイナリ値が 1010011001101011 の場合、1010 0110 0110 1011 と書き込まれます。
2進数から10進数への変換
2 進数を 10 進数に変換するには、各桁に重み付けされた位置を掛け、重み付けされた各値を加算します。たとえば、2 進数値 1011 0101 は次のようになります。
1*27 + 0*26 + 1*25 + 1*24 + 0*23 + 1*22 + 0*21 + 1*20 = 1 * 128 + 0 * 64 + 1 * 32 + 1 * 16 + 0 * 8 + 1 * 4 + 0 * 2 + 1 * 1 = 128 + 0 + 32 + 16 + 0 + 4 + 0 + 1 = 181
10進数から2進数への変換
10 進数を 2 進数に変換する一般的な方法は、10 進数を 2 で割り、余りが 0 の場合は横に 0 を記入します。余りが 1 の場合は 1 を記入します。
このプロセスは、商を 2 で割り、商が 0 になるまで前の余りを切り捨てることによって続けられます。割り算を実行すると、10 進数の 2 進数に相当する余りが最下位桁 (右) から書き込まれ、新しい各桁は前の桁の上位桁 (左) に書き込まれます。
例を見てみましょう。2671 という数字を考えてみましょう。2671 という数字の 2 進数変換は次の表に示されています。
分割 |
商 |
残り |
2進数 |
2671 / 2 |
1335 |
1 |
1 |
1335 / 2 |
667 |
1 |
11 |
667 / 2 |
333 |
1 |
111 |
333 / 2 |
166 |
1 |
1111 |
166 / 2 |
83 |
0 |
0 1111 |
83 / 2 |
41 |
1 |
10 1111 |
41 / 2 |
20 |
1 |
110 1111 |
20 / 2 |
10 |
0 |
0110 1111 |
10 / 2 |
5 |
0 |
0 0110 1111 |
5 / 2 |
2 |
1 |
10 0110 1111 |
2 / 2 |
1 |
0 |
010 0110 1111 |
1 / 2 |
0 |
1 |
1010 0110 1111 |
この表は変換のすべてのステップを明確にするためのものですが、実際には、変換の容易さと速度を実現するために、次の方法に従って結果を得ることができます。
1980 を 2 進数に変換する任意の 10 進数とします。表に示されている方法に従って、次のようにこの問題を解決します。
矢印の方向に従って余りを並べると、10進数1980 = 0111 1011 1100に相当する2進数が得られます。
2進数形式
通常、2 進数はビットのシーケンスとして記述されます。「ビット」は、マシンの「2 進数」の略です。これらのビットには、定義された形式の境界があります。これらの形式の境界は、次の表に示されています。
名前 |
サイズ(ビット単位) |
例 |
少し |
1 |
1 |
ニブル |
4 |
0101 |
バイト |
8 |
0000 0101 |
言葉 |
16 |
0000 0000 0000 0101 |
ダブルワード |
32 |
0000 0000 0000 0000 0000 0000 0000 0101 |
任意の基数で値を変更せずに、先頭のゼロを必要な数だけ追加できますが、通常は、バイナリ数を目的のサイズ境界に調整するために先頭のゼロを追加します。
たとえば、数字 7 は、表に示すようにさまざまなケースで次のように表すことができます。
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
少し | | | | | | | | | | | | | | 1 | 1 | 1 |
ニブル | | | | | | | | | | | | | 0 | 1 | 1 | 1 |
バイト | | | | | | | | | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
言葉 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
2 進数の右端のビットはビット位置 0 であり、左側の各ビットには上記の表に示すように次の連続するビット番号が割り当てられます。
ビット 0 は通常、最下位ビット (LSB) と呼ばれ、左端のビットは通常、最上位ビット (MSB) と呼ばれます。次の表現形式について知っておきましょう。
ビット
ビットは、バイナリ コンピューター上のデータの最小単位です。1 ビットは、0 または 1 の 1 つの値のみを表すことができます。ビットを使用してブール値 (True/False) を表す場合、そのビットは true または false を表します。
ニブル
ニブルは、数値システム、BCD (2進化10進数) または16進数 (基数16) について話すときに特に興味深い領域になります。
ニブルは 4 ビット境界上のビットの集合です。1 つの BCD または 16 進数を表すには 4 ビットが必要です。ニブルを使用すると、最大 16 個の異なる値を表すことができます。
16 進数の場合、0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F の値が 4 ビットで表されます。BCD では、10 個の異なる数字 (0、1、2、3、4、5、6、7、8、9) が使用され、4 ビットが必要です。
実際、16 個の異なる値は 1 つのニブルで表現できますが、16 進数と BCD 数字は 1 つのニブルで表現できる主な項目です。ニブルのビット レベルの表現は次のようになります。
バイト
バイトは、80x86 マイクロプロセッサで使用される最も重要なデータ構造です。バイトは 8 ビットで構成され、マイクロプロセッサでアドレス指定可能な最小のデータ項目です。コンピュータのメイン メモリと I/O アドレスはすべてバイト アドレスであるため、80x86 マイクロプロセッサ プログラムが個別にアクセスできる最小項目は 8 ビット値です。
これより小さいデータにアクセスするには、データを含むバイトを読み取り、不要なビットをマスクする必要があります。次の章では、これを行うためのプログラミングを行います。
バイトの最も重要な用途は、文字コードを保持することです。バイト内のビットは、次のようにビット 0 (b0) からビット 7 (b7) まで番号が付けられます。
ビット 0 (b0) はバイトの下位ビットまたは最下位ビットであり、ビット 7 (b7) はバイトの上位ビットまたは最上位ビットです。
ここでわかるように、バイトにはちょうど 2 つのニブルが含まれており、ビット b0 から b3 が下位ニブルを構成し、ビット b4 から b7 が上位ニブルを構成します。
1 バイトには 2 つのニブルが含まれるため、バイト値には 2 つの 16 進数字が必要です。
従来の現代のコンピューターはバイト アドレス指定可能なマシンであるため、個々のビットやニブルよりもバイト全体を操作する方が効率的であることがわかります。
これが、ほとんどのプログラマが256項目以下のデータ型を表すために1バイト全体を使用する理由です。
バイトには 8 ビットが含まれるため、28 または 256 の異なる値を表すことができます。これは、8 ビットの 2 進数の最大値が 1111 1111 で、これは 256 (10 進数) に相当するためであり、したがって、一般的にバイトは次のものを表すために使用されます。
- 0から255までの範囲の符号なし数値
- -128 から +127 の範囲の符号付き数値
- ASCII 文字コード
- また、他の特殊なデータ型では、256 個以下の異なる値しか必要としません。多くのデータ型には 256 個未満の項目があるため、通常は 8 ビットで十分です。
言葉
ワードは 16 ビットのグループです。しかし、伝統的にワードの境界は 16 ビットまたはプロセッサのデータ バスのサイズとして定義され、ダブル ワードは 2 ワードです。したがって、ワードとダブル ワードは固定サイズではなく、プロセッサに応じてシステムごとに異なります。ただし、概念的な理解のために、ワードを 2 バイトとして定義します。
ビット レベルでワードを見ると、ワード内のビットがビット 0 (b0) からビット 15 (b15) まで番号付けされます。ビット レベルの表現は次のようになります。
ここで、ビット 0 は LSB (最下位ビット)、ビット 15 は MSB (最上位ビット) です。ワード内の他のビットを参照する必要がある場合は、ビット位置番号を使用して参照します。
このように、ワードにはちょうど 2 つのバイトが含まれ、ビット b0 からビット b7 が下位バイト、ビット b8 からビット b15 が上位バイトとなります。16 ビットのワードでは、216 (65536) の異なる値を表すことができます。これらの値は次のようになります。
- 0 ~ 65,535 の範囲の符号なし数値。
- -32,768から+32,767の範囲の符号付き数値
- 65,536 個以下の値を持つ任意のデータ型。この方法では、単語は主に次の目的で使用されます。
- 16ビット整数データ値
- 16ビットのメモリアドレス
- 16ビット以下の数値システム
二重語
ダブルワードはまさにその名の通り、2 つのワードです。したがって、ダブルワードの量は 32 ビットです。ダブルワードは、上位ワードと下位ワード、4 バイト、8 ニブルなどに分割することもできます。
このように、ダブルワードはあらゆる種類の異なるデータを表すことができます。次のようなものがあります。
- 0から4,294,967,295の範囲の符号なしダブルワード。
- -2,147,483,648から2,147,483,647の範囲の符号付きダブルワード。
- 32ビット浮動小数点値
- または、32 ビット以下を必要とするその他のデータ。
8進数システム
8 進数システムは古いコンピュータ システムでは一般的でしたが、現在ではほとんど使用されていません。ただし、知識として 8 進数システムの概念を取り上げます。
8 進数は 3 ビット境界の 2 進数に基づいています。8 進数では基数が 8 で、0 から 7 までの数字のみが含まれます。このため、他の数字を使用すると、その数字は無効な 8 進数になります。
各ポジションの加重値は次の表のとおりです。
(基本)パワー |
85 |
84 |
83 |
82 |
81 |
80 |
価値 |
32768 |
4096 |
512 |
64 |
8 |
1 |
2進数から8進数への変換
整数の 2 進数を 8 進数に変換するには、次の 2 つの手順に従います。
まず、2 進数をLSB から MSB までの 3 ビット セクションに分割します。次に、3 ビットの 2 進数を 8 進数に変換します。理解を深めるために例を見てみましょう。2 進数、たとえば 11001011010001 を 8 進数に変換する場合、上記の 2 つの手順を次のように適用します。
2進数の3ビットセクション |
011 |
001 |
011 |
010 |
001 |
同等の番号 |
3 |
1 |
3 |
2 |
1 |
したがって、2進数11001011010001 に相当する 8 進数は 31321 です。
8進数から2進数への変換
任意の 8 進整数を対応する 2 進数に変換するには、次の 2 つの手順に従います。
まず、10 進数を 3 ビットの 2 進数に変換します。次に、スペースを削除して 3 ビットのセクションを結合します。例を見てみましょう。8 進数の整数 31321(Q) を対応する 2 進数に変換する場合、上記の 2 つの手順を次のように適用します。
同等の番号 |
3 |
1 |
3 |
2 |
1 |
2進数の3ビットセクション |
011 |
001 |
011 |
010 |
001 |
したがって、8進数31321(Q)の2進数は011 0010 1101 0001になります。
8進数から10進数への変換
任意の 8 進数を 10 進数に変換するには、各位置の値にその 8 進数の重みを掛けて、各値を加算します。
これをよりよく理解するために、例を見てみましょう。8進数31321Qを対応する10進数に変換するとします。次に、次の手順に従います。
3*84 + 1*83 + 3*82 + 2*81 + 1*80 = 3*4096 + 1*512 + 3*64 + 2*8 + 1*1 = 12288 + 512 + 192 + 16 + 1 = 13009
10進数から8進数への変換
10 進数を 8 進数に変換するのは、少し難しいです。10 進数を 8 進数に変換する一般的な方法は、8 による除算を繰り返すことです。この方法では、10 進数を 8 で割り、余りを最下位桁として横に書きます。このプロセスは、商を 8 で割り、商が 0 になるまで余りを書き続けることで続けられます。
除算を実行すると、10 進数の 8 進数に相当する剰余が最下位桁 (右) から書き込まれ、新しい各桁は前の桁の次の上位桁 (左) に書き込まれます。
例を使って理解を深めましょう。13009 などの 10 進数がある場合 (この 10 進数は上記の例から見つけ、それを 8 進数に戻すことで前の例も確認できます)、この方法は次の表で説明されています。
分割 |
商 |
残り |
8進数 |
13009 / 8 |
1626 |
1 |
1 |
1626 / 8 |
203 |
2 |
21 |
203 / 8 |
25 |
3 |
321 |
25 / 8 |
3 |
1 |
1321 |
3 / 8 |
0 |
3 |
31321 |
ご覧のとおり、元の数値に戻りました。これが予想通りの結果です。この表は手順を理解するためのものです。では、同じ変換を繰り返して、作業の容易さと時間の節約のために実際に従うべき方法を理解しましょう。実際にはどちらも同じものです。
矢印の方向に従って余りを並べると、予想通りの 8 進数 31321 が得られます。
16進数システム
16 進数は、次の 2 つの機能を備えているため、データ復旧やその他のディスク トラブルシューティングやディスク分析プログラミングで最もよく使用されます。
16 進数は非常にコンパクトです。また、16 進数から 2 進数へ、2 進数から 16 進数へ変換するのも簡単です。ハード ディスクのシリンダ数、ヘッド数、セクター数など、多くの重要な数値を計算したり、ハード ディスク エディター プログラムを使用してさまざまな特性や問題を分析したりするには、16 進数システムに関する十分な知識が必要です。16 進数システムは、ニブルまたは 4 ビット境界を使用する 2 進数システムに基づいています。
16進数システムは16 を基数とし、0 から 9 までの数字と A、B、C、D、E、F の文字のみで構成されます。16 進数を表すには、数字に H を付加します。次の表は、さまざまな数値システムの表現を、それぞれ区別して示しています。
バイナリ | 八進数 | 小数点 | ヘックス |
0000B | 00Q | 00 | 00H |
0001B | 01Q | 01 | 01H |
0010B | 02Q | 02 | 02H |
0011B | 03Q | 03 | 03H |
0100B | 04Q | 04 | 04時間 |
0101B | 05Q | 05 | 05H |
0110B | 06Q | 06 | 06時間 |
0111B | 07Q | 07 | 07時間 |
1000B | 10Q | 08 | 08時間 |
1001B | 11Q | 09 | 09時間 |
1010B | 12Q | 10 | 0AH |
1011B | 13Q | 11 | 0BH |
1100B | 14Q | 12 | 0CH |
1101B | 15Q | 13 | 0DH |
1110B | 16Q | 14 | 0EH |
1111B | 17Q | 15 | 0FH |
1 0000B | 20Q | 16 | 10時間 |
この表には、0 から 16 までの 10 進数値をある基数から別の基数に変換するために必要なすべての情報が記載されています。
16 進数の各位置の重み付け値は次の表に示されています。
(基本)パワー |
163 |
162 |
161 |
160 |
価値 |
4096 |
256 |
16 |
1 |
2進数から16進数への変換
2 進数を 16 進数形式に変換するには、まず 2 進数の左端の先頭にゼロを追加して、2 進数が 4 ビットの倍数になるようにします。その後、次の 2 つの手順に従います。
まず、2 進数を LSB から MSB まで 4 ビットのセクションに分割します。次に、4 ビットの 2 進数を 16 進数に変換します。この方法をよりよく理解するために、例を見てみましょう。2 進数 100 1110 1101 0011 を対応する 16 進数に変換するとします。次に、上記の 2 つの手順を次のように適用します。
4ビット2進数セクション |
0100 |
1110 |
1101 |
0011 |
16進数値 |
4 |
そして |
だ |
3 |
したがって、 2 進数 100 1110 1101 0011に対応する 16 進数値は 4ED3 です。
16進数から2進数への変換
16 進数を 2 進数に変換するには、次の 2 つの手順に従います。
まず、16進数を4ビットの2進数に変換します。次に、スペースを削除して4ビットのセクションを結合します。手順をよりよく理解するために、上記の16進数である4ED3を例にとり、次の2つの手順を適用します。
16進数値 |
4 |
そして |
だ |
3 |
4ビット2進数セクション |
0100 |
1110 |
1101 |
0011 |
したがって、16進数4ED3の場合、対応する2進数は0100 1110 1101 0011になります。
これは期待される答えです。
16 進数から 10 進数への変換 16 進数から 10 進数に変換するには、各位置の値を 16 進数の重みで乗算し、各値を加算します。手順をよりよく理解するために、例を見てみましょう。16 進数 3ABE を同等の 10 進数に変換するとします。手順は次のようになります。3*163 + A*162 + B*161 + E*160 = 3* 4096 + 10* 256 + 11*16 + 14 = 12288 + 2560 + 176 + 14 = 15038
したがって、16 進数 3ABE に相当する 10 進数は 15038 です。
10進数から16進数への変換
10 進数を 16 進数に変換する一般的な方法は、16 による繰り返し除算です。この方法では、 10 進数を 16 で割り、その余りを最下位桁として横に書きます。
このプロセスは、商を 16 で割り、商が 0 になるまで余りを書き続けることによって続けられます。割り算を実行すると、10 進数の 16 進数に相当する余りが最下位桁 (右) から書き込まれ、新しい各桁は前の桁の次の上位桁 (左) に書き込まれます。
例を使って学習してみましょう。上記の変換後に得られた 10 進数 15038 を取り上げます。これにより、上記の変換を確認したり、その逆を行ったりすることもできます。
分割 |
商 |
残り |
16進数 |
15038 / 16 |
939 |
14 ( EH ) |
そして |
939 / 16 |
58 |
11 ( B H) |
なれ |
58 / 16 |
3 |
10 (あH) |
阿部 |
3 / 16 |
0 |
3(3時間) |
03ABE |
こうして、16 進数 03ABE H が得られ、これは 10 進数 15038 に相当し、このようにして元の数値に戻ります。これが予想通りの結果です。
次の表は、0 から 255 の 10 進数の範囲で 16 進数から 10 進数への変換、およびその逆の変換をすばやく検索するのに役立ちます。
このスクエア テーブルには、0 から A までの 16 行と、0 から A までの 16 列があります。このテーブルから、0H から FFH までの範囲内にある任意の 16 進数の 10 進値を見つけることができます。つまり、数値の 10 進値は 0 から 255 の 10 進数の範囲内にある必要があります。
- 上記の表から 16 進数の 10 進数値を見つける: 上記の表では、行数は 16 進数の最初の 16 進桁 (左の 16 進桁) を表し、列数は 16 進数の 2 番目の 16 進桁 (右の 16 進桁) を表します。
たとえば、ACH という 16 進数を同等の 10 進数に変換します。次に、表の A 行目の C 列の 10 進数値を確認し、10 進数値 172 を取得します。これは、16 進数 ACH に相当する 10 進数です。
- 上記の表から 10 進数の 16 進数値を見つける: 上記の表では、行数は 16 進数の最初の桁 (左の 16 進数値) を表し、列数は 16 進数の 2 番目の桁 (右の 16 進数値) を表します。したがって、10 進数を同等の 16 進数に変換する場合は、表で数値を検索し、次のように同等の 16 進数値を見つけます。
10 進数の 16 進数値 = (行番号)(列番号)
たとえば、10 進数 154 に相当する 16 進数値を見つけたい場合は、表でその数値の位置を確認します。数値 154 は、表の 9 行目、A 列目にあります。したがって、10 進数 154 に相当する 16 進数値は 9AH です。
ASCIIコード
略語 ASCII は、American Standard Code for Information Interchange (情報交換用アメリカ標準コード) の略です。これは、文字、数字、記号のコーディング標準であり、ASCII 文字セットの最初の 128 文字と同じですが、残りの文字とは異なります。これらの他の文字は通常、IBM によって定義された拡張文字の特殊 ASCII 文字と呼ばれます。
最初の 32 文字 (ASCII コード 0 から 1FH) は、印刷されない文字の特別なセットを形成します。これらの文字は、シンボルを表示するのではなく、さまざまなプリンタおよびディスプレイの制御操作を実行するため、制御文字と呼ばれます。これらの文字は、この章の ASCII 文字表にリストされています。これらの制御文字には、次の意味があります。
ゼロ(ゼロ):
文字なし。これは、ストレージ デバイスの表面 (プラッターの表面など) でデータがない時間を埋めたり、スペースを埋めたりするために使用されます。データ ワイパー (破壊的および非破壊的の両方) のプログラミングを行うときにこの文字を使用して、割り当てられていないスペースを消去し、削除されたデータが誰にも、またはどのプログラムでも復元できないようにします。
SOH (機首方向開始):
この文字は、アドレスまたはルーティング情報を含む可能性のある見出しの開始を示すために使用されます。
TX (テキストの開始):
この文字はテキストの開始を示すために使用され、同様に見出しの終了を示すためにも使用されます。
ETX (テキスト終了):
この文字は、STX で開始されたテキストを終了するために使用されます。
EOT (送信終了):
この文字は送信の終了を示します。送信には、見出し付きの 1 つ以上の「テスト」が含まれている場合があります。
ENQ(お問い合わせ):
これは、リモート ステーションからの応答の要求です。これは、ステーションが自身を識別するための要求です。
ACK(確認):
これは、受信デバイスからサンダーへの肯定応答として送信される文字です。ポーリング メッセージに対する肯定応答として使用されます。
BEL(ベル):
これは、人間の注意を引く必要がある場合に使用されます。アラームや注意喚起デバイスを制御する場合があります。次に示すように、コマンド プロンプトでこの文字を入力すると、コンピューターに接続されているスピーカーからベル音が聞こえます。
C:\> エコー ^G
ここで、^G は Ctrl + G キーの組み合わせによって印刷されます。
BS(バックスペース):
この文字は、印刷機構または表示カーソルが 1 つの位置だけ後方に移動することを示します。
HT (水平タブ):
これは、印刷機構または表示カーソルが、事前に割り当てられた次の「タブ」または停止位置まで前進することを示します。
LF(改行):
印刷機構または表示カーソルが次の行の先頭に移動することを示します。
VT(垂直タブ):
これは、印刷機構または表示カーソルが、事前に割り当てられた一連の印刷行の次の行に移動することを示します。
FF(フォームフィード):
印刷機構または表示カーソルが次のページ、次ページ、または次画面の開始位置に移動することを示します。
CR (キャリッジリターン):
印刷機構または表示カーソルが同じ行の開始位置へ移動することを示します。
SO(シフトアウト):
これは、Shift In 文字に到達するまで、後続のコード組み合わせが標準文字セット外として解釈されることを示します。
I(シフトイン):
これは、後続のコード組み合わせが標準文字セットに従って解釈されることを示します。
DLE (データリンクエスケープ):
これは、連続する 1 つ以上の文字の意味を変更する文字です。補助的な制御を提供したり、任意のビットの組み合わせを持つデータ文字の送信を許可したりできます。
DC1、DC2、DC3、DC4 (デバイス コントロール):
これらは補助装置または特別な端末機能を制御するための文字です。
NAK (否定応答):
受信側デバイスが送信側への否定応答として送信する文字です。ポーリング メッセージに対する否定応答として使用されます。
SYN (同期/アイドル):
これは、データが送信されていないときに同期を実現するために同期伝送システムによって使用され、同期伝送システムは SYN 文字を連続して送信する場合があります。
ETB (送信終了ブロック):
この文字は、通信目的のデータ ブロックの終了を示します。ブロック構造が処理形式に必ずしも関連しないデータのブロックに使用されます。
CAN (キャンセル):エラーが検出されたため、通常はメッセージまたはブロック内のその前のデータを無視する必要があることを示します。
EM (媒体の終了):テープ、表面 (通常はディスクのプラッター)、またはその他の媒体の物理的な終了、または媒体の使用済み部分の終了を示します。
SUB (Substitute):誤りまたは無効であると判明した文字の代替です。
ESC (エスケープ):連続して続く指定された数の文字に別の意味を与えることで、コード拡張を提供することを目的とした文字です。
FS (ファイル区切り文字):この文字はファイル区切り文字として使用されます。
GS (グループセパレータ):グループセパレータ文字として使用されます。
RS (レコードセパレータ):レコード区切り文字として使用されます。
米国(ユナイテッドセパレーター):
統合された区切り文字です。
32 個の ASCII 文字コードの 2 番目のグループには、さまざまな句読点、特殊文字、および数字が含まれます。このグループで最も重要な文字は次のとおりです。
スペース文字(ASCIIコード20H) 数字0~9(ASCIIコード30h~39h) 数学記号および論理記号
SP(スペース):
これは、単語を区切ったり、印刷機構を移動したり、カーソルを 1 つ前に表示したりするために使用される非印刷文字です。
32 個の ASCII 文字の 3 番目のグループは、大文字のアルファベット文字のグループです。文字 A から Z の ASCII コードは、41H から 5AH の範囲にあります。アルファベット文字は 26 種類しかないため、残りの 6 つのコードにはさまざまな特殊記号が含まれます。
32 個の ASCII 文字コードの 4 番目のグループは、小文字のアルファベット記号、5 つの追加特殊記号、および別の制御文字削除のグループです。
DEL (削除):
不要な文字を消すために使用されます。むしろ、不要な文字を削除すると言えます。
次に、ASCII コードと拡張文字を表す 2 つの表を示します。最初の表は、説明されている 4 つの異なるタイプの文字のグループすべてを表します。この表は、次に示すデータ表現と ASCII テーブルです。
データ表現と ASCII コード表:
ヘックス | 12月 | CHR | Ctrl キー |
---|
00 | 0 | NULL | ^@ |
01 | 1 | ソウ | ^あ |
02 | 2 | テキサス州 | ^バ |
03 | 3 | ETX | ^C |
04 | 4 | 終了 | ^D |
05 | 5 | ENQ | ^E |
06 | 6 | ACK | ^F |
07 | 7 | ベル | ^G |
08 | 8 | BS | ^H |
09 | 9 | HT | ^私 |
0A | 10 | LF | ^J |
0B | 11 | VT | ^K |
0C | 12 | FF | ^L |
0D | 13 | CR | ^ま |
0E | 14 | それで | ^N |
0F | 15 | そして | ^O |
10 | 16 | によると | ^P |
11 | 17 | DC1 | ^Q |
12 | 18 | DC2 | ^R |
13 | 19 | DC3 | ^S |
14 | 20 | DC4 | ^T |
15 | 21 | 募集中 | ^U |
16 | 22 | 彼の | ^V |
17 | 23 | ETBS の | ^W |
18 | 24 | できる | ^X |
19 | 25 | で | ^そして |
1A | 26 | サブ | ^Z |
1B | 27 | ESC |
1C | 28 | FS |
1D | 29 | GS |
1E | 30 | RS |
1階 | 31 | 私たち |
ヘックス | 12月 | CHR |
---|
20 | 32 | スペース |
21 | 33 | ! |
22 | 34 | 「 |
23 | 35 | # |
24 | 36 | $ |
25 | 37 | % |
26 | 38 | & |
27 | 39 | ' |
28 | 40 | ( |
29 | 41 | ) |
2A | 42 | * |
2B | 43 | + |
2C | 44 | 、 |
2D | 45 | - |
2E | 46 | 。 |
2階 | 47 | / |
30 | 48 | 0 |
31 | 49 | 1 |
32 | 50 | 2 |
33 | 51 | 3 |
34 | 52 | 4 |
35 | 53 | 5 |
36 | 54 | 6 |
37 | 55 | 7 |
38 | 56 | 8 |
39 | 57 | 9 |
3A | 58 | : |
3B | 59 | ; |
3C | 60 | < |
3D | 61 | = |
3E | 62 | > |
3階 | 63 | ? |
ヘックス | 12月 | CHR |
---|
40 | 64 | @ |
41 | 65 | あ |
42 | 66 | B |
43 | 67 | C |
44 | 68 | だ |
45 | 69 | そして |
46 | 70 | ふ |
47 | 71 | グ |
48 | 72 | H |
49 | 73 | 私 |
4A | 74 | J |
4B | 75 | け |
4C | 76 | ら |
4D | 77 | ま |
4E | 78 | いいえ |
4階 | 79 | の |
50 | 80 | ポ |
51 | 81 | 質問 |
52 | 82 | R |
53 | 83 | S |
54 | 84 | T |
55 | 85 | で |
56 | 86 | で |
57 | 87 | で |
58 | 88 | バツ |
59 | 89 | そして |
5A | 90 | と |
5B | 91 | [ |
5C | 92 | \ |
5D | 93 | ] |
5E | 94 | ^ |
5階 | 95 | _ |
ヘックス | 12月 | CHR |
---|
60 | 96 | ` |
61 | 97 | 1つの |
62 | 98 | b |
63 | 99 | c |
64 | 100 | d |
65 | 101 | そして |
66 | 102 | ふ |
67 | 103 | グ |
68 | 104 | h |
69 | 105 | 私 |
6A | 106 | じゅう |
6B | 107 | け |
6C | 108 | l |
6D | 109 | メートル |
6E | 110 | ん |
6階 | 111 | の |
70 | 112 | p |
71 | 113 | q |
72 | 114 | r |
73 | 115 | s |
74 | 116 | t |
75 | 117 | で |
76 | 118 | で |
77 | 119 | で |
78 | 120 | x |
79 | 121 | そして |
7A | 122 | と |
7B | 123 | {[} |
7C | 124 | | |
7D | 125 | } |
7E | 126 | 〜 |
7階 | 127 | の |
次の表は、拡張 ASCII 文字と呼ばれることが多い 128 個の特殊な ASCII 文字セットを示しています。
ヘックス | 12月 | CHR |
---|
80 | 128 | 何 |
81 | 129 | ü |
82 | 130 | そして |
83 | 131 | â |
84 | 132 | ä |
85 | 133 | もっている |
86 | 134 | に |
87 | 135 | 何 |
88 | 136 | 意思 |
89 | 137 | s |
8A | 138 | そして |
8B | 139 | 私 |
8C | 140 | 質問 |
8D | 141 | で |
8E | 142 | Ä |
8階 | 143 | おお |
90 | 144 | そして |
91 | 145 | おお |
92 | 146 | ああ、ああ |
93 | 147 | 傘 |
94 | 148 | 彼 |
95 | 149 | いいえ |
96 | 150 | そして |
97 | 151 | ù |
98 | 152 | ÿ |
99 | 153 | 彼 |
9A | 154 | あなた |
9B | 155 | ¢ |
9C | 156 | £ |
9D | 157 | ¥ |
9E | 158 | ₧ |
9階 | 159 | ƒ |
A0 | 160 | の上 |
A1 | 161 | で |
A2 | 162 | から |
A3 | 163 | ええと |
A4 | 164 | ñ |
ヘックス | 12月 | CHR |
---|
A5 | 165 | Ñ |
A6 | 166 | ª |
A7 | 167 | º |
A8 | 168 | ¿ |
A9 | 169 | ⌐ |
AA | 170 | ¬ |
AB | 171 | 1/2 |
交流 | 172 | ¼ |
広告 | 173 | ¡ |
しかし | 174 | « |
の | 175 | » |
B0 | 176 | ░ |
B1 | 177 | ▒ |
B2 | 178 | ▓ |
B3 | 179 | │ |
B4 | 180 | ┤ |
B5 | 181 | ╡ |
B6 | 182 | ╢ |
B7 | 183 | ╖ |
B8 | 184 | ╕ |
B9 | 185 | ╣ |
ない | 186 | ║ |
BB | 187 | ╗ |
紀元前 | 188 | ╝ |
BD | 189 | ╜ |
なれ | 190 | ╛ |
ボーイフレンド | 191 | ┐ |
C0 | 192 | └ |
C1 | 193 | ┴ |
C2 | 194 | ┬ |
C3 | 195 | ├ |
C4 | 196 | ─ |
C5 | 197 | ┼ |
C6 | 198 | ╞ |
C7 | 199 | ╟ |
C8 | 200 | ╚ |
C9 | 201 | ╔ |
ヘックス | 12月 | CHR |
---|
それ | 202 | ╩ |
CB | 203 | ╦ |
CC | 204 | ╠ |
CD | 205 | ═ |
これ | 206 | ╬ |
CF | 207 | ╧ |
0 0 | 208 | ╨ |
D1 | 209 | ╤ |
D2 | 210 | ╥ |
D3 | 211 | ╙ |
D4 | 212 | ╘ |
D5 | 213 | ╒ |
D6 | 214 | ╓ |
D7 | 215 | ╫ |
D8 | 216 | ╪ |
D9 | 217 | ┘ |
そして | 218 | ┌ |
BD | 219 | █ |
コロンビア特別区 | 220 | ▄ |
DD | 221 | ▌ |
から | 222 | ▐ |
DF | 223 | ▀ |
E0 | 224 | あ |
E1 | 225 | SS |
E2 | 226 | と |
E3 | 227 | ん |
E4 | 228 | と |
E5 | 229 | と |
E6 | 230 | µ |
E7 | 231 | T |
E8 | 232 | ふ |
E9 | 233 | 私 |
はい | 234 | 考え |
EB | 235 | グ |
欧州連合 | 236 | ∞ |
ED | 237 | ふ |
EE | 238 | え |
16進数 | 12月 | 人権擁護団体 |
---|
もし | 239 | ∩ |
0 ... | 240 | ≡ |
F1 | 241 | ± |
F2 | 242 | ≥ |
F3 | 243 | ≤ |
F4 | 244 | ⌠ |
F5 | 245 | ⌡ |
F6 | 246 | ÷ |
F7 | 247 | ≈ |
F8 | 248 | ° |
F9 | 249 | ∙ |
しかし | 250 | · |
フェイスブック | 251 | √ |
FC | 252 | ⁿ |
FD | 253 | ² |
FE | 254 | ■ |
FF | 255 | |
データの表現や保存によく使われる数値システムの重要な用語
以下の表は、分数接頭辞および増補接頭辞として使用されるさまざまな接頭辞を示しています。
バイト:
バイトの最も重要な用途は、文字コードを格納することです。これについては以前にも議論しました。
キロバイト
技術的には、1 キロバイトは 1024 バイトに相当しますが、1000 バイトの同義語として広く使用されます。 10進法ではキロは1000に等しくなりますが、2進法ではキロは1024(210)に等しくなります。
キロバイトは通常、K または Kb と表記されます。 10 進数の K (1000) と 2 進数の K (1024) を区別するために、IEEE (米国電気電子技術者協会) 規格では、10 進数のキロには小文字の k、2 進数のキロには大文字の K を使用するという規則に従うことが提案されましたが、この規則は決して厳密に守られているわけではありません。
メガバイト
メガバイトは 1,048,576 (220) バイトのデータストレージを表すために使用されますが、MB/s などのデータ転送速度を表す場合は 100 万バイトを指します。メガバイトは通常、M または MB と略されます。
ギガバイト
ギガバイトは 1,073,741,824 (230) バイトのストレージを表すために使用され、1 ギガバイトは 1,024 メガバイトに相当します。ギガバイトは通常、G または GB と略されます。
テラバイト
1テラバイトは1,099,511,627,776(240)バイトに相当し、約1兆バイトになります。 1 テラバイトは 1012 (1,000,000,000,000) バイトと表現されることもあり、これは正確に 1 兆です。
ペタバイト
ペタバイトは 1,125,899,906,842,624 (250) バイトとして表されます。 1ペタバイトは1,024テラバイトに相当します。
エクサバイト
エクサバイトは 1,152,921,504,606,846,976 (260) バイトとして表されます。 1 エクサバイトは 1,024 ペタバイトに相当します。
ゼタバイト
ゼタバイトは 1,180,591,620,717,411,303,424 (270) バイトと表現され、これは約 1021 (1,000,000,000,000,000,000,000) バイトに相当します。 1 ゼタバイトは 1.024 エクサバイトに相当します。
ヨタバイト
1 ヨタバイトは 1,208,925,819,614,629,174,706,176 (280) バイトと表現され、これは約 1024 (1,000,000,000,000,000,000,000,000) バイトに相当します。ヨタバイトは 1.024 ゼタバイトに相当します。
データ保存の一般条件
前述の用語を参照するために、データ ビットのグループごとに異なる名前が使用されます。最もよく使用されるもののいくつかを次の表に示します。
締め切り |
ビット数 |
ページ / 番号 / フラグ |
1 |
噛む / 噛む |
4 |
バイト/文字 |
8 |
言葉 |
16 |
ダブルワード / ロングワード |
32 |
非常に長い単語 |
64 |