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

相關文章
相關標籤/搜索