46

私は工学を勉強している弟にCを教えていました。さまざまなデータ型が実際にメモリに格納される方法を彼に説明していました。符号付き/符号なしの数値と10進数の浮動小数点ビットの背後にあるロジスティクスについて説明しました。彼にCでのchar型について話している間、ASCIIコードシステムと、charが1バイトの数値としてどのように格納されるかについても説明しました。

彼は、なぜ「A」にASCIIコード65が与えられ、他には何も与えられていないのかと私に尋ねました。同様に、なぜ「a」にコード97が具体的に与えられているのですか?大文字と小文字の範囲の間に6つのASCIIコードのギャップがあるのはなぜですか?私はこれを知りませんでした。これは私にも大きな好奇心をもたらしたので、私がこれを理解するのを手伝ってくれませんか。私はこれまで、このトピックについて論じている本を見つけたことがありません。

この背後にある理由は何ですか?ASCIIコードは論理的に編成されていますか?

4

7 に答える 7

73

主に ASCII コードの変換を容易にするための歴史的な理由があります。

数字 (0x30 から 0x39) にはバイナリ プレフィックス 110000 があります。

0 is 110000
1 is 110001
2 is 110010

そのため、プレフィックス (最初の 2 つの「1」) を削除すると、2 進化 10 進数の数字になります。

大文字にはバイナリ プレフィックス 1000000 が付きます。

A is 1000001
B is 1000010
C is 1000011

等。同様に、プレフィックス (最初の '1') を削除すると、アルファベットでインデックスされた文字 (A は 1、Z は 26 など) になります。

小文字にはバイナリ プレフィックス 1100000 が付きます。

a is 1100001
b is 1100010
c is 1100011

等 同上。したがって、大文字に 32 (100000) を追加すると、小文字バージョンになります。

于 2009-07-16T08:30:38.963 に答える
11

このチャートはウィキペディアからそれを非常によく示しています: コントロール 2 の 2 つの列の上 2 と下の 2 列に注意してください。 ウィキペディアの ASCII チャート

また、ASCII は以前に渡されたものに基づいて開発されたことにも注意してください。ASCII の歴史の詳細については、Tom Jennings によるこの優れた記事を参照してください。この記事には、いくつかの奇妙な制御文字の意味と使用法も含まれています。

于 2009-07-16T08:29:53.160 に答える
6

ASCII コードの非常に詳細な歴史と説明を以下に示します: http://en.wikipedia.org/wiki/ASCII
要するに:

  • ASCII は、テレプリンター エンコーディング標準に基づいています。
  • 最初の 30 文字は「印刷不可」 - テキストの書式設定に使用
  • 次に、大まかにキーボードに配置される順序で、印刷可能な文字を続けます。キーボードを確認します。
    • スペース、
    • 数字の大文字記号: !、"、#、...、
    • 数字
    • 通常、キーボード行の最後に配置される数字 - 大文字の記号
    • 大文字、アルファベット順
    • 通常、キーボード行の最後に配置される記号 - 大文字
    • 小文字、アルファベット順
    • 通常、キーボード行の最後に配置される文字 - 小文字の記号
于 2009-07-16T08:27:40.873 に答える
5

Aとの間の距離aは 32 です。かなりおおざっぱな数字ですね。

大文字と小文字の間の 6 文字のギャップは、(32 - 26) = 6 であるためです (注: 英語のアルファベットには 26 文字あります)。

于 2009-07-16T08:28:10.247 に答える
0
  • 「A」は 16 進数で 0x41 です。
  • 「a」は 16 進数で 0x61 です。
  • '0' から '9' は 16 進数で 0x30 - 0x39 です。

したがって、少なくともA、 、aおよびの数字を覚えるのは簡単0-9です。記号についてはわかりません。ASCII Ordering に関するウィキペディアの記事を参照してください。

于 2009-07-16T08:25:07.307 に答える
0

「a」と「A」のバイナリ表現を見ると、1 ビットしか違わないことがわかります。これは非常に便利です (大文字を小文字に、またはその逆は、a を反転するだけです)。少し)。なぜそこから始めるのか、私にはわかりません。

于 2009-07-16T08:28:54.287 に答える