ASCII码的一段历史

    最近在慢慢的看一些guava的源代码,发现一段跟ascii相关的代码,结合一段历史来看颇有意思。app

    guava代码中有Ascii这个类,定义了Ascii中部分字符的常量,目的嘛。。都是byte的常量,难道是省空间,Orz。直接说重点,里面定义touppercase和tolowercase方法,指明只对ascii码中的大小写进行转换,其实也就是对英文字母的转换,这与String里的方法是有区别的,由于String里面的case转换是基于unicode字符集的,显然大部分状况下,咱们只须要对英文字母作大小写的转换,因而String toxxcase里面的一大坨代码须要考虑的locale,对不一样字符的大小写转换码表,大量的位运算,还有不少判断逻辑都是浮云,代码不少余。Ascii里的代码很简单,只是使用位运算来处理英文字母的大小写转换,由于大小写相差刚刚32,unicode码里面有各类字符之间转换的码表,而ascii转换码表很简单,+-32便可,因此使用0x5f和0x20来作位运算就能够进行转换了,一个小的改进带来的价值有多大。。若是你有几百台机器在作大小写不敏感的字符串匹配和分析,这个改进的价值几何呢?我不清楚,也许google能给个答案。ide

    32,这个数字很凑巧,恰好能够使用位运算来对大小写进行转换,实际上是在1963年一次投票后Ascii码中大小写才改进为相差32:google

The X3.2.4 task group voted its approval for the change to ASCII at its May 1963 meeting.Locating the lowercase letters in columns 6 and 7 caused the characters to differ in bit pattern from the upper case by a single bit, which simplified case-insensitive character matching and the construction of keyboards and printers.code

  不少时候咱们须要了解更多的计算机发展历史才能明白更多东西,只是咱们有多少时间专门来作这件事呢,还得平时多留心啊!ci

相关文章
相关标签/搜索