0

クラスでは ASCII テーブルについて学び、128 文字のすべての文字にはそれを表す 0 ~ 128 の一意の番号があることを学びます。たとえば、「a」は 97 です (バイナリでは 97 は 1100001 です)。「%」は 37 です (2 進数では 37 は 0100101 です)。(固定長 7 の場合、2 進数を 0 から開始できるようにする必要があることは理解しています)

97 が "a" を表している場合、文字列 "97" を表すものは何ですか? 整数 97 を表すのは何ですか?

4

3 に答える 3

1

あなたの質問は、整数、文字列、またはその他のタイプの値の表現が与えられた場合、タイプと値を判別できるという概念に基づいていると思います。できません。

ほとんどのデジタル コンピュータ アーキテクチャでは、データはビットであり、連続した 8 ビット バイトでアクセスされます。バイトを取り、それを負でない整数と考えて、2 進数、8 進数、10 進数、16 進数などで表すことができます。バイナリは、ビットがそれ自体で値を表す場合に使用されます。16 進数は、そのコンパクトさと 2 進数への変換の容易さから好まれます。Decimal は、バイト全体が人間にとっていくつかの基数の値を持つ場合に使用され、負の整数の選択になります。

では、1 バイトのファイルまたはメモリ アドレスの 97 (10 進数) というバイトが与えられた場合、その型と値は何でしょうか? 知るための唯一の方法は、ある種の共有された理解、つまり合意、宣言、規約、仕様、データ マップなどを通じてです。つまり、コミュニケーションです。完全な通信は、データと、バイトの解釈方法を示す付属または個別のメタデータで構成されます。

97₁₀ = 61₁₆ = 01100001₂ は次のようになります。

  • 8 ビットの符号なし整数: 97₁₀
  • 8 ビットの 2 の補数の符号付き整数: 97₁₀
  • UTF-8 コード単位として: たまたま Unicode コードポイントのすべてのコード単位: 'a' (U+0061) 'LATIN SMALL LETTER A'
  • ASCII コード単位として: (すべての ASCII コードポイントは 1 つの 8 ビット コード単位を取ります): 'a'
  • ISO 8859-1 コード単位として: (すべての ISO 8859-1 コードポイントは 1 つの 8 ビット コード単位を取ります): 'a'
  • 8ビットにパックできるものなら何でも。

それで、あなたの質問を次のように言い換えます: "a" を表す 97 と整数 97 を表す 97 の違いは何ですか? 答えは、バイトではなく、メタデータにあります。

于 2018-01-28T16:15:30.040 に答える
0

ASCII 値は、任意の値を に使用charまたは型キャストした場合にのみ返されます。したがって、質問のとおり、97 はデータ型で表すことができます。ただし、文字として 97 が必要な場合は、次のコードを記述する必要があります。unsigned intcharint

char c[2], i;
c[0]=57;
c[1]=55;
for (i=0; i<2; i++) printf("%c", c[i]);
于 2018-01-28T11:47:22.687 に答える