キャラクター(コンピューティング)

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

コンピュータおよび機械ベースの電気通信用語では、文字書記素、書記素のような単位、または自然言語書記形式のアルファベット音節文字などの記号にほぼ対応する情報の単位です。[1]

文字の例には、文字数字、一般的な句読点( "。"や "-"など)、および空白が含まれます。この概念には、表示される記号ではなく、テキストをフォーマットまたは処理するための命令に対応する制御文字も含まれます。制御文字の例には、キャリッジリターンまたはタブ、およびテキストを表示または処理するプリンタやその他のデバイス への指示が含まれます。

文字は通常、文字列に結合されます。

歴史的に、文字という用語は、特定の数の連続するビットを表すためにも使用されていました今日、文字は8ビット(1バイト)を参照すると想定されていますが、 6ビット文字コードなどの他の定義はかつて一般的でした(大文字のみを使用、数字や句読点ではなく小文字を表すのに十分なビットを使用)許可されている)、[2] [3]、さらには5ビットのBaudotコードも過去に使用されており、この用語は4ビット[4]にも適用され、16の可能な値しかありませんでした。完全な英語のアルファベットを表すことを意図しており、表すこともできません。も参照してくださいユニバーサル文字セット文字。8ビットでは表現できませんが、 UTF-8を使用して1つ以上の8ビットコードユニットすべてを表現できます

エンコーディング

コンピュータと通信機器は、各文字を何かに割り当てる文字エンコーディングを使用して文字を表現します。これは、ネットワークを介して保存または送信できる、通常は数字のシーケンスで表される整数です。通常のエンコーディングの2つの例は、ASCIIUnicodeのUTF-8エンコーディングですほとんどの文字エンコーディングは文字を数字やビットシーケンスにマップしますが、モールス信号は代わりにさまざまな長さの一連の電気インパルスを使用して文字を表します。

用語

歴史的に、文字という用語は、多くの場合プログラミング言語またはAPIによって定義されているように、エンコードされた文字を指すために業界の専門家によって広く使用されてきました同様に、文字セットは、特定のビットシーケンスまたは数値コードにマップされた文字の特定のレパートリーを参照するために広く使用されています。グリフという用語は、キャラクターの特定の視覚的外観を表すために使用されます。多くのコンピュータフォントは、対応する文字の数値コードによってインデックスが付けられたグリフで構成されています。

Unicode [5]とビットにとらわれないコード化文字セットの出現と普及により、[明確化が必要]文字は、特定の視覚的表現とは無関係に、情報の単位としてますます見られるようになっています。ISO / IEC 10646(Unicode)国際規格は、文字または抽象文字を定義します「データの編成、制御、または表現に使用される一連の要素のメンバー」として。Unicodeの定義は、特に文字、書記素、およびグリフを区別するように読者に促す説明文でこれを補足します。このような差別化は、プレゼンテーションとコンテンツの分離というより広いテーマの例です

たとえば、ヘブライ語の文字 aleph ( "א")は、数学者が特定の種類の無限大(ℵ)を表すためによく使用されますが、通常のヘブライ語のテキストでも使用されます。Unicodeでは、これら2つの使用法は異なる文字と見なされ、2つの異なるUnicode数値識別子(「コードポイント」)がありますが、同じようにレンダリングされる場合があります。逆に、水(「水」)の中国語の 表語文字は、日本語のテキストでは中国語のテキストとはわずかに異なる外観を持っている可能性があり、ローカルの書体はこれを反映している可能性があります。ただし、Unicodeでは、これらは同じ文字と見なされ、同じコードポイントを共有します。

Unicode標準では、これらの抽象文字と、コンピューターでの表現を容易にする数値コードとペアになっている コード化文字またはコード化文字も区別されます。

結合文字

結合文字もUnicodeで処理されますたとえば、Unicodeはそれぞれにコードポイントを割り当てます

  • 'i'(U + 0069)、
  • 結合分音記号(U + 0308)、および
  • 'ï'(U + 00EF)。

これにより、単語「ナイーブ」の中央の文字を単一の文字「ï」として、または文字「i」と組み合わせ分音記号の組み合わせとしてコーディングできます:(U + 0069 LATIN SMALL LETTER I + U + 0308分音記号の組み合わせ); これも 'ï'としてレンダリングされます。

これらは、Unicode標準では標準的に同等であると見なされます。

char

Cプログラミング言語charは、正確に1バイトのサイズのデータ​​型であり[6]、「基本実行文字セット」のメンバーを含むのに十分な大きさであると定義されています。正確なビット数はマクロで確認できます。最も一般的なサイズは8ビットであり、POSIX標準では8ビットである必要があります。[7]新しいC標準では、8ビットの最小サイズを必要 とするUTF-8コードユニット[6]を保持するためにcharが必要です。CHAR_BIT

Unicodeコードポイントには、最大21ビットが必要になる場合があります。[8]これはほとんどのシステムの文字に収まらないため、各コードポイントが1〜4バイトかかる可変長エンコーディングUTF-8のように、一部のシステムでは複数が使用されます。さらに、「文字」という単語の意味によっては、 「文字」に複数のコードポイントが必要になる場合があります(たとえば、文字の組み合わせなど)。

文字が歴史的に1バイトに格納されていたという事実により、ほとんどのドキュメントで2つの用語(「char」と「character」)が同じ意味で使用されていました。これにより、UTF-8などのマルチバイトエンコーディングが使用されている場合、ドキュメントが混乱したり誤解を招いたりすることが多く、文字列操作関数(文字列の「長さ」をコード単位の数として計算するなど)の実装が非効率的で不正確になります。バイト)。最新のPOSIXドキュメントはこれを修正しようとし、「文字」を単一のグラフィックシンボルまたは制御コードを表す1つ以上のバイトのシーケンスとして定義し、charデータを参照するときに「バイト」を使用しようとします。(バイト配列ではなく)。[11]

Unicodeは、 charより大きいコード単位で構成される文字列に格納することもできますこれらは「ワイド文字」と呼ばれます。元のCタイプはwchar_tと呼ばれていました。wchar_tを16ビットとして定義しているプラ​​ットフォームと32ビットとして定義しているプラ​​ットフォームがあるため、最近のバージョンではchar16_tchar32_tが追加されています。それでも、格納されるオブジェクトは文字ではない可能性があります。たとえば、可変長UTF-16はchar16_tの配列に格納されることがよくあります

他の言語にもchar型があります。C ++などの一部はCのように8ビットを使用します。Javaなどの他の機能は、UTF-16値を表すために charに16ビットを使用します。

も参照してください

参考文献

  1. ^ 「文字の定義」www.merriam-webster.com 2018年4月1日取得
  2. ^ Dreyfus、Phillippe(1958)。「ガンマ60のシステム設計」。要件知識の管理、国際ワークショップ、ロサンゼルスニューヨーク。pp。130–133。土井10.1109 /AFIPS.1958.32[…]内部データコードが使用されます:定量的(数値)データは4ビットの10進コードでコード化されます。定性的(英数字)データは、6ビットの英数字コードでコード化されます。内部命令コードは、命令がストレートバイナリコードでコード化されていることを意味します。内部情報の長さに関しては、情報量子は「カテナ」と呼ばれます
    、 "であり、10進数の6桁または英数字の4文字を表す24ビットで構成されます。この量子には、10進数または英数字の整数を表すために4ビットと6ビットの倍数が含まれている必要があります。24ビットは次のようになります。パラレル読み出しコアメモリからの転送フローが低すぎる原因となる最小12ビットと、情報量が多すぎると判断された36ビット以上との間の適切な妥協点。可変ワード長のマシンの文字に相当しますが、複数の文字が含まれている可能性があるため、呼び出すことはできません。メインメモリとの間で直列に転送されます。
    「クォンタム」を単語、または文字のセットを文字と呼びたくない場合(単語は単語であり、クォンタムは別のものです)、新しい単語が作成され、「カテナ」と呼ばれました。これは英語の単語であり、フランス語ではありませんがWebster'sに存在します。ウェブスターのカテナという言葉の定義は、「接続されたシリーズ」です。したがって、24ビットの情報項目です。カテナという言葉は、今後使用されます。
    したがって、内部コードが定義されています。では、外部データコードは何ですか?これらは主に、関連する情報処理デバイスに依存します。ガンマ60 [ fr  ]バイナリコード化された構造に関連する情報を処理するように設計されています。したがって、80列のパンチカードは960ビットの情報アイテムと見なされます。12行に80列を掛けると、960の可能なパンチに相当します。メインメモリの960個の磁気コアに正確な画像として保存され、2つのカード列が1つのカテナを占有します。[…]
  3. ^ Blaauw、Gerrit Anne ; ブルックスジュニア、フレデリックフィリップス; Buchholz、Werner(1962)、"4:Natural Data Units" (PDF)、in Buchholz、Werner(ed。)、Planning a Computer System – Project StretchMcGraw-Hill Book Company、Inc。 / The Maple Press Company、York 、PA。、pp。39–40、LCCN 61-10466、2017-04-03オリジナルからアーカイブ(PDF) 、 2017-04-03を取得[…]ここで使用される用語は、マシンによって課される構造を説明するために使用されますビットに加えて、デザインを以下に示します。バイト  
    文字のエンコードに使用されるビットのグループ、または入出力ユニットと並行して送受信されるビット数を示します。ここでは、文字以外の用語が使用されています。これは、特定の文字が異なるアプリケーションで複数のコードによって表される場合があり、異なるコードが異なるビット数(つまり、異なるバイトサイズ)を使用する場合があるためです。入出力伝送では、ビットのグループ化は完全に任意であり、実際の文字とは関係ありません。(この用語はバイトから造られていますが、ビットへの偶発的な変異を避けるためにリスペリングされています。)
    ワードは、1メモリサイクルでメモリと並行して送信されるデータビットの数で構成されますワードサイズしたがって、メモリの構造プロパティとして定義されます。カテナという用語は、この目的のためにBull GAMMA 60  [ fr ]コンピューターの設計者によって造られました。)
    ブロックとは、単一の入出力命令に応答して入出力ユニットとの間で送受信されるワードの数を指します。ブロックサイズは、入出力ユニットの構造プロパティです。設計によって修正されたか、プログラムによって変更される可能性があります。[…]
  4. ^ 「用語と略語」。MCS-4アセンブリ言語プログラミングマニュアル-INTELLEC4マイクロコンピュータシステムプログラミングマニュアル(PDF)(暫定版)。米国カリフォルニア州サンタクララ:IntelCorporation1973年12月。pp。v、2-6。MCS-030-1273-1。2020-03-01のオリジナルからアーカイブ(PDF)2020年3月2日取得[…]ビット-表現できる情報の最小単位。(ビットは、2つの状態I 0または1のいずれかにある可能性があります)。[…]バイト-1つのメモリ位置を占める8つの連続したビットのグループ。[…]文字-4つの連続するデータビットのグループ。[…] (注:このIntel 4004マニュアルでは、8ビットデータエンティティではなく4ビットを指す文字という用語を使用しています。Intelは、1974年に、後続のプロセッサ4040のドキュメントで、4ビットエンティティに対してより一般的なニブルという用語を使用するように切り替えました。 )。
  5. ^ デイビス、マーク(2008-05-05)。「Unicode5.1への移行」Googleブログ2008年9月28日取得
  6. ^ a b "§1.7C++メモリモデル/§5.3.3Sizeof"。ISO / IEC 14882:2011
  7. ^ "<limits.h>"pubs.opengroup.org 2018年4月1日取得
  8. ^ 「Unicode用語集–コードポイント」2019年5月14日取得
  9. ^ 「文字のPOSIX定義」
  10. ^ 「POSIXstrlenリファレンス」
  11. ^ 「文字配列のPOSIX定義」

外部リンク

  • キャラクター: Linux情報プロジェクト(LINFO)による簡単な紹介
  • ISO / IEC TR 15285:1998は、ISO / IECの文字モデルを要約し、用語の定義に焦点を当て、文字とグリフを区別しています。