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 存储实数