Java編程那些事兒8——電腦內部的資料表達作者:陳躍峰出自:http://blog.csdn.net/mailbomb
1.3 電腦內部的資料表達 電腦內部資料表達的總原則就是:把一切內容數值化、數字化。這個也是編程時處理資料的基本方式,對於編程理解的越深入,則將越認同該原則。 其實電腦也只能這樣,因為電腦內部只能儲存0和1兩個數字,所以必須把指令、資料、圖片、文本等各種各樣的內容數字化成0和1進行儲存、傳輸和顯示。
1.3.1 整數的表達 整數有正負之分,但是電腦內部只能儲存0和1,則電腦內部將符號數字化,用二進位碼的最高位代表符號位,規定該位為0代表正,1代表負。這就是符號數字化的規定。前面介紹過整數在電腦內部都是以二進位的形式儲存的。但是為了計算方便,以及簡化CPU的結構,所以在儲存和運算時都採用補碼的形式。 前面介紹的那些直接計算出來的二進位形式,都稱作整數的原碼。規定正數的原碼、反碼和補碼都是自身。 而對於負數,仔細研究一下其組成格式。以8位機為例,也就是一個數字占電腦中的8位,也就是一個位元組,用最高位儲存符號位,其它的位儲存數值。例如-8的原碼是10001000,最高位的1代表負數,後續的7位代表數值。 負數的反碼是指符號位不變,其他的位取反,也就是0變1,1變0,則-8的反碼是11110111。 負數的補碼是指在反碼的數值位上加1,運算後得到的結果,只計算數值位,不改變符號位。則-8的補碼是11111000,該次運算中,低位向高位進行了進位。 規律:補碼的補碼等於負數的原碼。 也就是對負數的補碼再求補,則得到的負數的原碼。 熟悉整數的表達,對於後續理解資料的區間以及進行強制轉換以後得到的數值很有協助,也是進行位元運算的基礎。 備忘:小數,程式設計語言中稱浮點數,的儲存形式和整數不同。
1.3.2 字元的表達 字元指電腦內部單個的符號,如標點符號、英文字母和漢字等等。因為這些字元種類各異,電腦無法直接表達,那麼就採用了電腦編程中也常用的方式,對每個字元進行編號,例如規定a字元編號為97,b字元編號為98等等。 由於需要編號的字元很多,就專門規定了一系列字元和編號的對應規則,那麼這些對應表就被稱作字元集,常見的字元集有ASCII、GB2312、BIG5等。 在電腦內部儲存、運算和傳輸時,都只需要使用該編號即可。 字元集比較完美的解決了字元的儲存和傳輸的問題。 所以字元在程式內部可以參與運算,其實參與運算的就是這個字元的編號,字元集規律是很多字元變換邏輯實現的基礎。 備忘:字元的顯示則通過專門的字元顯示碼實現。
1.3.3 總結 其實電腦內部所有的東西都是以數位形式儲存的,這裡只是希望通過這兩種簡單的結構,使大家瞭解將資料數字化的思想,這是編程時常用的思想之一。