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 總結 其實計算機內部所有的東西都是以數字的形式存儲的,這里只是希望通過這兩種簡單的結構,使大家了解將數據數字化的思想,這是編程時常用的思想之一。 |