10

在我的一次面试中,面试官问我为什么在 ASCII 表中大写字母在小写字母之前,我在 google.com 上搜索但一无所获,谁能给我答案?多谢!

4

3 回答 3

18

我只是猜测,但我想这是因为最早的字符集根本没有小写字母。Baudot 电报码只有 5 位,CDC 大型机原生使用 6 位码;没有小写的空间。当 ASCII 被开发为 7 位代码时,最终有足够的空间容纳小写字母,它们被认为是一种奢侈的附加组件,因此将它们放在集合的后半部分是有意义的。

但值得注意的是,这种排序特定于 ASCII 的,不一定适用于其他字符集;例如,EBCDIC 的小写字母在前。Commodore 微型计算机可以在两个字符集之间切换,即使两者都是基于 ASCII 的,带有小写字母的字符集首先具有它们。(另一组用额外的图形字符代替小写字母。)

Unicode 已从 ASCII(以及基于它的扩展拉丁字符集)中汲取灵感,因此大多数区分大小写的字母在其代码块中都将大写版本放在首位。但也有例外,当然许多其他字母根本没有大小写区别,而其他字母的关系比我们简单的 1 对 1 映射更复杂。

于 2012-10-21T02:32:58.893 回答
1

确保在对文本进行排序时小写字母不会出现在大写字母之前。

在现代 Unicode 时代,对文本进行排序要复杂得多,但 20 年前,您可以按 ASCII 值对文本进行排序。

于 2012-10-21T02:37:25.040 回答
0

基本上在对字符串进行排序时 w=你希望 'a' 出现在 'b' 之前,并且 'a' 的字符代码小于(小于)'b'。

与大写相同。“A”在“a”之前。

这样,您可以轻松地将 'Anthony' 排序在 'ant' 之前,只需比较字符代码,即使由于长度原因,小写的 'anthony' 通常会出现在 'ant' 之后。

如果大写的字符代码比小写的大,那么排序字符串就会变得非常复杂。

然而,正如“Slaks”所提到的......Unicode 使得它变得更加复杂,因为您有诸如 ȦAÁÀÂÄĀĂǍÃȂ 这样的字符,这些字符通常具有大于 'a' 的 unicode 数字,但通常被认为是在 'a' 之前排序。

于 2020-07-08T23:42:29.597 回答