補基礎:自學:計算機科學導論 第三章 數據存儲
3.1 數據類型
- 數字
- 文字
- 音頻
- 圖像
- 視頻
計算機內部的數據
所有計算機外部的數據類型的數據都采用統一的數據表示法轉換後存入計算機中,當數據從計算機輸出時再還原回來。這種通用的格式稱為位模式。
1. 位:是存儲在計算機中的最小單位。值為0或1
位代表設備的某一狀態,這些設備只能處於兩種狀態之一。
2. 位模式:為了表示數據的不同類型
它是一個序列,有時也成為位流。
通常長度為8的位模式被稱為1個字節(byte)。
位模式可以表示幾乎任何數據類型,所以計算機內存存儲這些而無需辨別它們表示的是何種數據類型。
3. 數據壓縮 (將在15章具體討論)
4. 錯誤檢測和糾正 (將在附錄H中討論)
3.2 存儲數字
3.2.1 存儲整數
使用定點表示法來存儲整數(存儲在內存中),即將小數點固定在最右邊。在這種表示法中,小數點是假定的,但並不存儲。
1. 無符號表示法
1)存儲無符號整數
- 首先將整數變成二進制數
- 如果二進制位數不足n位,則在二進制數的左邊補0,使它得的總位數為n位。如果位數大於n,該整數無法存儲。導致溢出的情況發生。
例 3.1:將7存儲在8位存儲單元中
- 想將整數轉換為二進制數111
- 加5個0使總的位數為8,00000111
- 再將該整數保存在存儲單元中。
2) 譯解無符號整數
輸出設備譯解內存中位模式的位串並轉換為一個十進制的無符號整數
3) 溢出
在n為存儲單元中,可以存儲的無符號整數僅為0到2n - 1之間
4)無符號整數的應用
無符號整數表示法可以調高存儲的效率,因為不必存儲整數的符號。
- 計數
- 尋址
- 為其他數據類型排序
2. 符號加絕對值表示法
此方法中,用於無符號整數的有效範圍(0到2n - 1)被分成2個相等的子範圍。前半個表示正整數,後半個表示負整數。
用符號加絕對值格式存儲一個整數,需要用1個二進制位表示符號(0表示正,1表示負)。這就意味著在一個8位存儲單元中,可以僅用7位表示數字的絕對值(不帶符號)。在n位單元可存儲的數字範圍是 -(2n-1
- 1)至 +(2n-1 - 1)3. 二進制補碼表示法
用來存儲位於n位存儲單元中的有符號整數。
無符號整數的有效範圍(0到2n - 1)被分為2個相等的子範圍:
- 非負整數
- 負整數
例如:如果n = 4, 該範圍是0000到1111。這個範圍分為兩半: 0000到0111以及1000到1111(此處書寫的是0000到0110以及0111到1111,應該是錯誤的)
1) 兩種運算
- 反碼或取一個整數的反碼
- 補碼或取一個證書的補碼
2) 以二進制補碼格式存儲整數
- 將整數變成n位的二進制數
- 如果整數是正數或0,以其原樣存儲;如果是負數,計算機取其補碼存儲
3) 從二進制補碼格式還原整數
- 如果最左位是1,計算機取其補碼。如果最左位是0,計算機不進行操作
- 計算機將該整數轉換為十進制。
例 3.12 用二進制補碼表示法將整數28存儲在8為存儲單元中
解:該整數是正數,因此把該整數從十進制轉換成二進制後不需要其他操作。但需要在左邊補0,使其成為8位。
28變為8位的二進制: 0 0 0 1 1 1 0 0
例 3.13 用二進制補碼表示法將整數-28存儲在8為存儲單元中
解:該整數是負數,因此在轉換成二進制後計算機對其進行二進制補碼運算。
28變為8位的二進制: 0 0 0 1 1 1 0 0
進行補碼運算: 1 1 1 0 0 1 0 0
例 3.14 用二進制補碼表示法將存儲在8位存儲單元中的0 0 0 0 1 1 0 1還原成整數
解: 最左位是0, 表示符號為正,所以直接轉換為十進制即可
例 3.15 用二進制補碼表示法將存儲在8位存儲單元中的1 1 1 0 0 1 1 0還原成整數
解: 最左位是1,表示符號為負。轉換為十進制前需要進行補碼運算
最左位是1, 符號為負 1 1 1 0 0 1 1 0
補碼運算 0 0 0 1 1 0 1 0
轉換為十進制 26
加上符號 -26
4)二進制補碼表示法的溢出
有正負兩種溢出。假設使用4位存儲單元存儲一個帶符號的整數。
-8 –7 –6 –5 –4 –3 –2 –1 0 1 2 3 4 5 6 7
如果5再加上6, 計算機響應為-5
如果-3再減去7, 計算機響應為6
未完,明天繼續第三章 3.2.2 存儲實數
補基礎:自學:計算機科學導論 第三章 數據存儲