計算機以二進制表示和存儲信息。
計算機內部數據的存儲,根據數據的特性分為:
1、 無符號整數
2、 有符號整數(補碼)
3、 浮點數
明確的關鍵點:
1、 計算機內部是通過有限的位編碼一個數字,因此存在“溢出”現象,因為表示的范圍是有限的。
2、 大多數計算機使用8位的塊,做為最小的可尋址的存儲器單位。
3、不同的數據類型,數據大小是不一樣的。(準確的要依賴機器和編譯器)。
4、對象的地址使用字節序列中的最小的地址。(網絡傳輸、跨平臺時考慮字節序的問題)
一、無符號整數
基本的“二進制”表示。
二、有符號整數 --- 補碼 【同余】
使用補碼,減法也可按加法來處理(ALU不用去實現減法運算)。(兩個用補碼表示的數據相加時候,將符號位和其它位統一處理,如果最高位(符號位)有進位,則進位被舍棄。)
最高有效位為符號位,1負數,0正數。(Java只支持有符號整數)
三、浮點數
劃分為三個域:1.符號 2.有效位(二進制小數) 3. 指數位(2的冪,對浮點數加權)
單精度:1 = 23 =8 ; 雙精度 :1 = 52 = 11。
特性:精度有限,浮點運算是不可結合和交換的。
四、“模”概念
“模”是指一個計量系統的計數范圍.如時鐘等.計算機也可以看成一個計量機器,它也有一個計量范圍,即都存在一個“模”.例如:
時鐘的計量范圍是0~11,模=12.
表示n位的計算機計量范圍是0~2(n)-1,模=2(n).【注:n表示指數】
“模”實質上是計量器產生“溢出”的量,它的值在計量器上表示不出來,計量器上只能表示出模的余數.任何有模的計量器,均可化減法為加法運算. 例如: 假設當前時針指向10點,而準確時間是6點,調整時間可有以下兩種撥法:
1、倒撥4小時,即:10-4=6
2、順撥8小時:10+8=12+6=6
在以12模的系統中,加8和減4效果是一樣的,因此凡是減4運算,都可以用加8來代替.
對“模”而言,8和4互為補數.實際上以12模的系統中,11和1,10和2,9和3,7和5,6和6都有這個特性.共同的特點是兩者相加等于模.
對于計算機,其概念和方法完全一樣.n位計算機,設n=8, 所能表示的最大數是11111111,若再加1稱為100000000(9位),但因只有8位,最高位1自然丟失.又回了00000000,所以8位二進制系統的模為2(8). 在這樣的系統中減法問題也可以化成加法問題,只需把減數用相應的補數表示就可以了.把補數用到計算機對數的處理上,就是補碼。