我正在教我的弟弟学习工程学。我向他解释了不同的数据类型实际存储在内存中的方式。我向他解释了签名/无符号数字背后的物流和十进制数字的浮点位。当我告诉他C中的char类型时,我还带他通过ASCII代码系统,以及char也被存储为1字节数。
他问我为什么'A'被给予ascii代码65而不是其他什么?同样,为什么'a'具体代码为97?为什么在大写字母和小写字母之间存在6个ascii代码的差距?我不知道这个。你能帮助我理解这一点吗,因为这也给我带来了很大的好奇心。到目前为止,我从未找到任何讨论过该主题的书。
这背后的原因是什么? ASCII码是否按逻辑组织?
答案 0 :(得分:71)
有历史原因,主要是为了使ASCII码易于转换:
数字(0x30至0x39)具有二进制前缀110000:
0 is 110000
1 is 110001
2 is 110010
等。 因此,如果你清除前缀(前两个'1'),你最终会得到二进制编码的十进制数字。
大写字母的二进制前缀为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)添加到大写字母,则您具有小写版本。
答案 1 :(得分:10)
这张图表从维基百科中可以很好地显示出来:注意下方2的上部2的两列控制2,然后用misc填充间隙。
还要记住,ASCII是基于之前的过程开发的。有关ASCII历史的更多详细信息,请参阅this superb article by Tom Jennings,其中还包括一些陌生控制字符的含义和用法。
答案 2 :(得分:6)
以下是ASCII代码的详细历史和说明:http://en.wikipedia.org/wiki/ASCII
简而言之:
答案 3 :(得分:5)
A
和a
之间的距离是32.这是非常圆的数字,不是吗?
大写字母和小写字母之间的6个字符的间隙是因为(32 - 26)= 6.(注意:英文字母中有26个字母)。
答案 4 :(得分:0)
因此,至少很容易记住A
,a
和0-9
的数字。我不知道这些符号。请参阅The Wikipedia article on ASCII Ordering。
答案 5 :(得分:0)
如果你看一下'a'和'A'的二进制表示,你会发现它们只相差1位,这非常有用(将大写字母改为小写字母,反之亦然)翻转一下)。为什么要专门开始,我不知道。
答案 6 :(得分:0)
代码本身的结构是这样的 大多数控制代码在一起,和 所有图形代码都在一起。该 前两列(32个职位)是 保留给控制角色。[14] “空间”角色必须来 在图形之前进行排序 算法简单,所以它成了位置 为0x20。[15]委员会决定这样做 重要的是支持大写 64个字符的字母表,并选择 结构ASCII因此很容易 减少到可用的64个字符集 图形代码。[16]小写 因此,字母不是交错的 大写。保持选项开放 小写字母和其他字母 图形,特殊和数字 代码放在字母之前, 字母'A'被放入 位置0x41以匹配草稿 相应的英国人 标准[17]。数字0-9是 因此它们对应于中的值 二进制前缀为011,制作 使用二进制编码的十进制转换 简单。