バイナリアルファベットで、a = 01000001で他の文字と同じである理由についての論理はありますか、それとも誰かがその数字の文字列をランダムに選んでaを表すのですか?


ベストアンサー

はい。

8ビット範囲の下部は制御コード用に予約されています。特に、空白のパンチカードを意味にする必要があるため、テキスト文字に00000000を割り当てることはできません。さらに、行全体をパンチすることで間違いをクリアできるのは素晴らしいことです。そのため、11111111がDELETE制御コードに割り当てられ、下位互換性のためにテキスト文字が7ビットに収まる必要があるという事実と組み合わされます。範囲の上限は制御コード用にも予約されています。

したがって、アルファベット文字は中央のどこかに配置する必要があります。 1ビットを反転して大文字と小文字を変換できると便利です。つまり、大文字と小文字は32のスパン(26より大きい2の最小の累乗)で区切る必要があります。また、ケース内の文字が連続していて、句読点が末尾にグループ化されていて、32文字の各範囲に残っている6つのコードポイントにあり、アルファベット文字のコードポイントのシーケンスが従来のアルファベット順と一致している場合にも便利です。単純なビットマスクを使用してアルファベット文字をその数字のアルファベット位置に変換できれば、さらに便利です。

これらすべてが、アルファベット文字を開始できる場所を大幅に制限します。その限られた可能性の範囲から、65または0100001が「A」に選択され、97または01100001が「a」に(たとえば、その逆ではなく)歴史的な理由で選択されました。古い5ビットの大文字のみのテキストシステムとの互換性。「A」には実際にはコードポイント1(00001)が割り当てられており、プレフィックスの単純な追加または切り捨てによってエンコーディング間の変換が可能です。

回答

「バイナリアルファベット」とは何ですか? ASCIIのことですか?なぜなら、そうすると、「a」は01000001に等しくないからです。大文字の「A」は01000001に相当します。「a」のASCII文字は01100001です。一方、EBCDICで「a」を書きたい場合は、たとえば、それは1000 0001になり、Aは11000001になります。

ASCIIテーブルの最初の32文字は、元々ハードウェアの制御に使用されていた非印刷の制御文字です。たとえば、 0000 0111はBELと呼ばれます。これは、ASCIIが最初に発明された古い電気機械式テレタイプマシンでベルを操作するために使用されていたためです。印刷された文字はASCII10進数33でのみ始まり、句読文字が最初(!)、次に数字、次に大文字、次に小文字で、ASCII 127のDELキーで終わります。これは、そこで使用された7ビットの最上部です。

いいえ、誰かが「数字の文字列をランダムに選択」しませんでした。これは、既存の電信コードに基づいて1960年に米国規格協会(現在のANSI)によって策定された標準でした。その標準は引き続きアップグレードおよび拡張されていますが、最初の128文字とコントロールは変更されていません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です