以下是引用w851777025在2014-1-20 01:17:00的发言:
原来那是……大错特错。不过还是要感谢你,让我少走弯路了。我是新手,对那些还没什么概念。
字符,是把什麽數據理解爲字符的概念。正如26個英文字母,你可以按順序把1-26的自然數視爲這些字母的順序號,也可以把0-25作爲順序號,從10000開始也沒問題,甚至用小數也可以,祇要數據不重複,用任何數據都可以,顛倒了行,不按順序來也行——這其實就是密碼對照表。ascii編碼,祇不過是衆多字符編碼方案中的一個,但世界上還有很多英文字母表示不了的字符(像英國的字母編碼就不完全與ascii圖案一樣)。在當今國際化的環境,字符編碼已經不再是ascii那樣是7位二進制編碼了,有16位甚至是32位的,想當然字符就是單字節的自然數,那是不行的。
不同的環境,可能有不同的編碼,數據可能不同,儲存容量也可能不同,這一點必須牢記,不要再ascii編碼包打天下,動不動就加減32變換大小寫,用字符型數據與整數運算之類暗藏隱患的方式,最好戒了(可惜很多人還以這種方式爲能,自以爲懂了技術深層,深入機器内部了,殊不知這其實是大戒)。爲什麽說字符型和整型不是一回事,就是這個道理,絕大多數給人用的編程語言都不允許那種用法,祇有機器人才那樣——當然如果懂變通還不錯,若是僵化思維就完蛋了。
把7位二進制數編排爲ascii字符的檢索碼,是因爲當時使用的字符就祇有這麽127個,隨著字符數量的增多,索引號越來越多,編碼長度也不斷變化,這就是與信息容量相關的意思。再説一遍,這祇是索引碼(如數組的下標一樣,所謂加密就是把數組的内容打亂了),不是字符本身,計算機要呈現字符,是按照索引碼從字庫中提取圖案輸出到顯示設備上的——理論上你可以編程使用任意的索引碼,祇要檢索字庫圖案正確即可。浮點數的方案,并不是簡單地按位使用二進制數據,它分幾部分,其中有冪次方部分,每個部分如何劃分、如何使用,也是有多種方案的,視如何取捨有效位數和精度而定(有一些浮點數方案,是偏重精度的,專用于金融數據,它數據範圍較小,但精度高),也不是一概而論的。一般來説,如果你不是做底層設計的,不需要理會這種細節,按規定用即可——在編程的世界,有時知道得少對你是一種保護,起碼可以按正常邏輯使用語言,確保不會帶來各種未知的副作用。
[
本帖最后由 TonyDeng 于 2014-1-20 12:14 编辑 ]