0

我们在课堂上学习 ASCII 表,128 个字符中的每个字符都有一个从 0 到 128 的唯一数字来表示它。例如“a”是 97(二进制 97 是 1100001)。“%”是 37(二进制 37 是 0100101)。(我知道对于 7 的固定长度,我们应该允许二进制数以 0 开头)

如果 97 代表“a”,那么什么代表字符串“97”?整数 97 代表什么?

4

3 回答 3

1

我认为你的问题是基于这样一个概念,即给定整数、字符串或其他类型的值的表示,你可以确定类型和值。你不能。

在大多数数字计算机体系结构中,数据是位,以连续的 8 位字节访问。您可以取一个字节,将其视为一个非负整数,并以二进制、八进制、十进制、十六进制……来表示它。当一个位本身表示一个值时,使用二进制。十六进制是首选,因为它紧凑且易于转换为二进制。当整个字节对人类有一些基数值时,使用十进制,这使其成为负整数的选择。

那么,给定字节 97(十进制),例如来自 1 字节文件或内存地址,类型和值是什么?唯一知道的方法是通过某种共同的理解:协议、声明、约定、规范、数据映射等。换句话说,沟通。完整的通信由数据和伴随的或单独的元数据组成,这些元数据指示如何解释字节。

97₁₀ = 61₁₆ = 01100001₂ 可能是:

  • 作为 8 位无符号整数:97₁₀
  • 作为 8 位二进制补码有符号整数:97₁₀
  • 作为 UTF-8 代码单元:恰好是 Unicode 代码点的所有代码单元:'a' (U+0061) 'LATIN SMALL LETTER A'
  • 作为 ASCII 代码单元:(所有 ASCII 代码点采用一个 8 位代码单元):'a'
  • 作为 ISO 8859-1 代码单元:(所有 ISO 8859-1 代码点采用一个 8 位代码单元):'a'
  • 任何可以打包成 8 位的东西。

因此,将您的问题改写为:代表“a”的 97 和代表整数 97 的 97 有什么区别?答案在于元数据,而不是字节。

于 2018-01-28T16:15:30.040 回答
0

好吧,字符串“97”由两个字符组成,因此需要两个 ascii 代码,一个用于“9”,另一个用于“7”。

所以答案是 57 和 55

于 2018-01-28T11:03:01.110 回答
0

char仅当我们使用或将任何unsigned int值强制转换为 ASCII 值时才会返回char。因此,根据您的问题, 97 可以用int数据类型表示。但是如果你想要 97 作为字符,那么你应该编写以下代码:

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 回答