字符與整數的關係(大小寫的轉換和減'0'問題)

計算機存儲數據原理

計算機只是一堆模擬和數字的集成電路,它們只能明白0和1兩種高低電平,其他什麼也不理解,那麼人們怎麼操作機器呢?剛開始只是通過0110這樣打孔來操作機器,後來慢慢有了彙編和其他高級語言來操作機器。

如何管理數據存儲

既然不管字符還是字符串數據在計算機中都只能用01來表示,那我們怎麼區分他們的不同呢,很簡單,就是使用多位的0和1來表示,1個不夠區分就用2個還不夠就依次往上加,而7個01就可以表示128個不同的數了,也就是說多少位就可以表示2的幾次方個不同的數據。
那麼哪些二進制數代表什麼數據,這需要一個統一的編碼規則,否則大家就會通信混亂,於是,人們提出了ASCII碼,統一規範了常用符號必須由哪些二進制數表示,這樣人們一旦使用了相同的編碼規則就可以互相通信了。

ASCII碼規則

計算機中的字符包括數值、英文字母、標點符號、製表符號及其他符號。每一個字符都用一個特定的二進制代碼來表示,這就是字符的編碼。目前,字符編碼採用的是美國信息交換標準代碼,即ASCII 碼。它是用一個字節的低七位來表示一個字符的編碼, 2^7 =128 ,最高位是 0 ,所以,用 ASCII 碼可表示 128 個字符)。有了這個我們就不怕我們輸入的字符,計算機不懂了。於是只要我們自己在程序中輸入一個字符(例如:‘a’)計算機在編譯過程中自動將它轉換成97的二進制碼,這就是爲什麼說字符本質上也是整型了,因爲字符變量只是告訴計算機,我這個數據只佔一個字節,也就是說我超不出128這個數去。而int則告訴我這個數可能很大,有65534那麼大呢。

數和字符的關係

下面就說說爲什麼字符減’0’可以到相應的整數。現在比如我們要字符‘1’轉換成數字1,就這麼一個變化,我們注意到字符型常量用’'括起來的原因是,它們在計算機中都以各自的ASCII表示。而‘1’的對應編碼是49的二進制碼,但是我們的數字1,就等於1呀,所以爲了由原來的‘1’實際上就是49的二進制變成現在的1對應的二進制1,只好用49-48=1了。但是在ASCII碼裏‘0’對應的剛好是48的二進制碼,所以我們轉換的時候只需要‘1’-‘0’=1;就可以了。而數字的ASCII碼是按順序規定的。所以其它字符要轉換成數字都可以用減‘0’來表示。比如‘2’的ASCII是50,而我們要得到數字2,於是用‘2’-48=2了。看來當我們知道數據在計算機中的存儲規則的時候,問題就迎刃而解了。
大小寫字母的轉換:先看ASCII碼:a ~ z是97~122的二進制,而A ~ Z是65~90的二進制編碼,於是我們就得出:大寫字母=小寫字母-32 ;這個公式了。當然這裏的32我也可以這麼寫‘Z’=‘z’-‘空格’。因爲空格的ASCII碼是32對應的二進制編碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章