
コンピュータおよび電気通信において、文字とは、自然言語の文字(文字、数字、句読点を含む)、空白文字(スペースまたはタブ)、または制御文字(文字ベースのデータを処理するコンピュータハードウェアを制御する文字)を符号化した表現のことです。文字の並びは文字列と呼ばれます。
文字エンコーディングシステムの中には、各文字を固定数のビットで表現するものと、可変サイズのものを使用するものがあります。現在では廃止されたシステムでは、6ビット文字コード[ 1 ] [ 2 ]、 5ビットBaudotコード、さらには4ビットシステム(可能な値は16個のみ)[ 3 ]など、さまざまな固定長サイズが使用されていました。より現代的なASCIIシステムでは、各文字に8ビットバイトを使用します。今日では、 UnicodeベースのUTF-8エンコーディングでは、可変数のバイトサイズのコードユニットを使用してコードポイントを定義し、それらを組み合わせて文字をエンコードします。
一般的に、文字とは情報を表す記号(文字や数字など)であり、コンピューティングの文脈では、コンピュータが受け入れ可能なそのような記号の表現を指します。[ 4 ]文字は、多くの場合、 ANSIやUnicodeなどの標準によって定義される情報の符号化を意味します。
文字セットとは、それぞれが固有の数値に対応する文字群のことです。
グリフとは、文字の特定の視覚的表現を表すものです。多くのコンピュータフォントは、対応する文字の数値コードによってインデックス付けされたグリフで構成されています。
Unicode [ 5 ]とビットに依存しないコード化文字セットの登場と普及に伴い、文字は特定の視覚的表現とは無関係な情報単位としてますます認識されるようになっている。ISO /IEC 10646 (Unicode) 国際規格では、文字、または抽象文字を「データの整理、制御、または表現に使用される要素セットのメンバー」と定義している。Unicode の定義では、文字、グラフェム、グリフなどを区別するよう読者に促す説明注釈が補足されている。このような区別は、表現と内容の分離というより広いテーマの一例である。
例えば、ヘブライ文字のアレフ(א)は、数学者が特定の種類の無限(ℵ)を表すためによく使われますが、通常のヘブライ語の文章でも使われます。Unicodeでは、これら2つの用法は異なる文字とみなされ、2つの異なるUnicode数値識別子(「コードポイント」)を持ちますが、見た目は同じになる場合もあります。逆に、中国語で「水」を表す漢字は、日本語の文章と中国語の文章では見た目が若干異なる場合があり、ローカルフォントにもそれが反映されていることがあります。しかし、Unicodeではこれらは同じ文字とみなされ、同じコードポイントを共有します。
Unicode規格では、これらの抽象文字と、コンピュータでの表現を容易にするために数値コードとペアになった符号化文字(またはエンコード文字)を区別している。
結合文字はUnicodeによって指定され、Unicodeはそれぞれにコードポイントを割り当てます。
これにより、「naïve」という単語の中央の文字を、単一の文字「ï」として、または文字「i」と結合分音記号の組み合わせ(U+0069 ラテン小文字 I + U+0308 結合分音記号)としてコード化することが可能になります。これは「i ̈ 」とも表示されます。
C言語では、バイトchar(文字の略) はサイズが 1バイトのデータ型です[ 6 ] [ 7 ]。ただし、バイトの事実上のサイズが 8 ビットであるのとは異なり、このバイトの使用方法はより限定的ではありません。バイトは、「基本実行文字セット」の任意のメンバーを格納できるほど大きいと定義されています。コンパイラが使用するビット数は、マクロを介してアクセスできます。最も一般的なサイズは 8 ビットで、POSIX では8 ビットであることが要求されています[ 8 ] 。最新の C 標準では、UTF-8コード ユニットを保持する必要があります[ 6 ] [ 7 ]。UTF -8コード ユニットには、最小サイズ 8 ビットが必要です。CHAR_BITchar
Unicodeコードポイントは最大21ビットを必要とする場合があるため[ 9 ]、このchar型は一般的にすべての文字に対して十分な大きさではありません。しかしながら、この型は各コードポイントが1~4バイトを必要とするUTF-8charエンコーディングには適しています。
文字が歴史的に1バイトに格納されていたという事実から、「char」と「character」という用語が互換的に使用されるようになり、UTF-8などのマルチバイトエンコーディングが使用される今日では混乱が生じています。最新のPOSIXドキュメントでは、「character」を単一のグラフィックシンボルまたは制御コードを表す1つ以上のバイトのシーケンスとして定義し、charデータを参照する場合は「byte」を使用することで、この問題を解決しようとしています。[ 10 ] [ 11 ]しかし、配列を(バイト配列ではなく)文字配列charとして定義するなど、依然としてエラーが含まれています。[ 12 ]
Unicode は、ワイド文字charと呼ばれるより大きなコード単位の文字列に格納できます。元の C 型はwchar_tと呼ばれていました。一部のプラットフォームではを 16 ビットと定義し、他のプラットフォームでは 32 ビットと定義しているため、現在のバージョンでは と が明確に提供されています。それでも、格納されるオブジェクトは文字ではない場合があり、たとえば可変長のUTF-16は の配列に格納されることがよくあります。wchar_tchar16_tchar32_tchar16_t
他の言語にもchar型があります。C ++を含む多くの言語は、C と同様に 8 ビット バイトを使用します。[ 7 ] Javaなどの他の言語は、UTF-16 をより直接的に扱うために 2 バイト幅のストレージを使用します。
[…] 内部データコードが使用されます。定量的(数値)データは 4 ビットの 10 進コードでコード化され、定性的(英数字)データは 6 ビットの英数字コードでコード化されます。内部
命令コード
とは、命令がストレート バイナリ コードでコード化されていることを意味します。
内部情報の長さに関しては、情報量子は「
カテナ
」と呼ばれ、6 桁の 10 進数または 4 文字の英数字を表す 24 ビットで構成されます。この量子は、10 進数または英数字の整数を表すために、4 ビットと 6 ビットの倍数でなければなりません。 24ビットは、並列読み出しコアメモリからの転送フローが低すぎる最小12ビットと、情報量子が大きすぎると判断された36ビット以上との間の良い妥協点であることがわかりました。カテナは可変
ワード
長マシンにおける文字に相当するものと考えられますが、複数の文字を含む可能性があるため、そう呼ぶことはできません。カテナはメインメモリとの間で直列に転送されます。
「量子」をワード、文字の集合を文字と呼びたくなかったので(ワードはワードであり、量子は別のものです)、新しい単語が作られ、「カテナ」と呼ばれました。これは英語の単語で、
ウェブスター
辞典にはありますが、フランス語にはありません。ウェブスター辞典におけるカテナの定義は「連結された系列」であり、したがって24ビットの情報項目です。以降、カテナという単語を使用します。
したがって、内部コードは定義されました。では、外部データコードは何でしょうか?これらは主に、関係する情報処理装置に依存します。 Gamma
60は
、あらゆるバイナリ符号化構造に関連する情報を処理できるように設計されています。したがって、80列のパンチカードは960ビットの情報項目とみなされます。12行×80列=960通りのパンチパターンが可能となり、2列のカードデータが1つのカテナを占める形で、メインメモリの960個の磁気コアに正確なイメージとして格納されます。[…]
[…] ここで使用されている、機械設計によって課せられる構造を説明する用語は、
ビット
に加えて、以下にリストされています。
バイトは
、文字をエンコードするために使用されるビットのグループ、または入出力ユニットとの間で並列に送信されるビットの数を示します。ここでは
文字
以外の用語
が用いられています。なぜなら、特定の文字は異なるアプリケーションにおいて複数のコードで表現される場合があり、また異なるコードでは異なるビット数(つまり、異なるバイトサイズ)が使用される場合があるからです。入出力伝送においては、ビットのグループ化は完全に任意であり、実際の文字とは何の関係もありません。(この用語はbiteから造語されています
が
、
bit
への誤用を避けるために綴りが変更されています
。)
ワードと
は、1つのメモリサイクルでメモリとの間で並列に送受信されるデータビットの数を指します。したがって、
ワードサイズ
はメモリの構造的特性として定義されます。(この目的のために、
Bull
GAMMA 60
コンピュータの設計者によって
catena
という用語が造語されました。)
ブロックと
は、単一の入出力命令に応じて入出力ユニットとの間で送受信されるワードの数を指します。ブロックサイズは入出力ユニットの構造的特性であり、設計によって固定されている場合もあれば、プログラムによって変更される場合もあります。[…]
[…]
ビット
- 表現できる最小の情報単位。(ビットは0または1のいずれかの状態をとる)。 […]
バイト
- 1つのメモリ位置を占める8ビットの連続したグループ。 […] 文字 - 4ビットの連続したデータのグループ。 […]
(注:このIntel 4004のマニュアルでは、「文字」という用語は8ビットではなく4ビットのデータ要素を指すために使用されています。Intelは、後継プロセッサ4040のドキュメントでは、1974年に既に4ビットのデータ要素に対してより一般的な用語である「ニブル」を使用するように変更しています。)
{{cite book}}:|website=無視されました (ヘルプ)