在我的一次采访中,面试官问我为什么大写字母在ASCII表格中的小写字母之前,我在google.com上搜索但没有找到,有人能给我答案吗?很多!
答案 0 :(得分:16)
我只是猜测,但我想它是因为最早的字符集根本没有小写。 Baudot电报代码只有5位,而CDC大型机本身使用的是6位代码;没有小写的空间。当ASCII被开发为7位代码时,它最终有足够的空间容纳小写字母,它们被认为是奢侈品附加组件,所以将它们放在后面的一半是有意义的。
但值得注意的是,这个排序是特定于ASCII,并不一定适用于其他字符集;例如,EBCDIC首先使用小写字母。 Commodore微型计算机可以在两个字符集之间切换,即使两者都基于ASCII,带有小写字母的字符集首先使用它们。 (另一组有额外的图形字符代替小写。)
Unicode已经从ASCII(以及基于它的扩展拉丁字符集)中获得了提示,因此大多数具有大小写区别的字母表都有大写版本在其代码块中排在第一位。但也有例外,当然许多其他字母表根本没有案例区别,而其他字母表的关系比简单的1对1映射更复杂。
答案 1 :(得分:1)
在排序文本时,确保小写字母不会出现在大写字母之前。
在现代Unicode时代,排序文本要复杂得多,但20年前,您可以按ASCII值对文本进行排序。
答案 2 :(得分:0)
基本上,在对字符串w =排序时,您希望'a'出现在'b'之前,并且'a'的字符代码小于(小于)'b'。
与大写字母相同。 “ A”在“ a”之前。
通过这种方式,即使由于长度原因通常小写的“安东尼”通常会出现在“蚂蚁”之后,您也可以通过比较字符代码轻松地在“蚂蚁”之前对“安东尼”进行排序。
如果大写字母的字符代码比小写字母大,那么排序字符串将变得非常复杂。
但是,正如“ Slaks”所提到的那样,Unicode使它变得更加复杂,因为您拥有诸如“AÁÁÄÄĀĂǍÃȂ”之类的字符,这些字符的unicode码通常大于“ a”,但通常被认为在“ a”之前进行排序。