我们在课堂上学习ascii表,并且每个128个字符的字符都有一个0-128的唯一数字代表它。 例如,“a”是97(二进制97是1100001)。 “%”是37(并且在二进制37中是0100101)。 (据我所知,对于7的固定长度,我们应该允许二进制数从0开始)
然后我想出了一个斗争。如果97表示“a”而不是表示字符串“97”?什么代表整数97?
非常感谢
答案 0 :(得分:1)
我认为你的问题是基于这样的概念:给定一个整数,字符串或其他类型的值的表示,你可以辨别出类型和值。你不能。
在大多数数字计算机体系结构中,数据是位,以连续的8位字节访问。您可以取一个字节,将其视为非负整数,并以二进制,八进制,十进制,十六进制,......表示。当位表示值本身时,使用二进制。十六进制因其紧凑性和易于二进制转换而成为首选。当整个字节对人类具有一些基数值时使用十进制,这使得它成为负整数的选择。
所以,给定字节,97(十进制),比如1字节文件或内存地址,是什么类型和值?要知道的唯一方法是通过某种共享理解:协议,声明,约定,规范,数据映射等。换句话说,通信。完整通信由数据和附带或单独的元数据组成,这些元数据指示如何解释字节。
97 10 = 61 1 = 01100001 2可以是:
所以,将你的问题改为:表示“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]);