ASCII表格和字符显示

时间:2018-01-28 10:56:59

标签: binary ascii bit data-representation bit-representation

我们在课堂上学习ascii表,并且每个128个字符的字符都有一个0-128的唯一数字代表它。 例如,“a”是97(二进制97是1100001)。 “%”是37(并且在二进制37中是0100101)。  (据我所知,对于7的固定长度,我们应该允许二进制数从0开始)

然后我想出了一个斗争。如果97表示“a”而不是表示字符串“97”?什么代表整数97?

非常感谢

3 个答案:

答案 0 :(得分:1)

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

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

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

97 10 = 61 1 = 01100001 2可以是:

  • 作为8位无符号整数:97 10
  • 作为8位二进制补码有符号整数:97 10
  • 作为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有什么区别?答案在于元数据,而不是字节。

答案 1 :(得分:0)

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

所以答案是57和55

答案 2 :(得分:0)

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

char c[2], i;
c[0]=57;
c[1]=55;
for (i=0; i<2; i++) printf("%c", c[i]);