计算机导论第三章_数据存储
3 数据存储
(Data Storage)
23:34 1பைடு நூலகம்
教学目标
通过本章的学习,同学们应该能够:
列出计算机中使用的五种数据类型. 描述不同的数据如何以位模式存储在计算机中. 描述整数如何以无符号格式存储在计算机中.
描述整数如何以符号加绝对值格式存储. 描述整数如何以二进制补码格式存储. 描述实数如何以浮点格式存储在计算机中. 描述文本如何通过各种不同的编码系统存储在计算机中. 描述音频如何通过采样、量化和编码存储在计算机中. 描述图像如何通过光栅和矢量图模式存储在计算机中. 描述视频如何以图像随时间变化的表示来存储在计算机中.
23:34 4
不同类型的数据可以按照相同的位模式存储 存储器仅关心将数据按位模式存储 将位模式解释为何种数据类型,则由程序负责
Figure 3.3 不同数据类型的存储
23:34 5
数据压缩 Data compression 更小的空间存储更多的数据 更短的时间下载更多的数据 存储或发送更少的位数(数据) 数据压缩 i
二进制补码表示法
使用二进制补码表示法来存储有符号整数。 在补码表示法中,无符号整数的有效范围 (0~2n−1) 被分为2个相等的子范围。 第一个子范围用来表示非负整数 (0和正) ,第二个 子范围用于表示负整数. 若n=4,范围是0000~1111,
分为两半,0000~0111和1000~1111,
23:34 26
Example 3.8
如何对整数00110110进行反码运算?
23:34
27
Example 3.9
进行2次反码运算,就可以得到原数.
23:34
28
补码运算
补码运算分为两步: 第一步,从右边复制位,直到有1被复制
第二步,反转其余的位
23:34
29
Example 3.10
如何对整数00110100进行补码运算?
i
23:34
Figure 3.4 整数的定点表示法
整数通常使用定点表示法存储在内存中.
8
无符号表示法 Unsigned representation
无符号整数是没有符号的整数,范围:0~无穷大.
在n位存储单元中,可以存储的无符号整数:0~2n-1
存储无符号整数的步骤: 1. 首先,将整数变成二进制数. 2. 若二进制位数不足n位,则在左边补0,达到n位.
23:34
32
Example 3.12
用二进制补码表示法将28存储在8位存储单元中.
解:该整数是正数, 故把该整数从十进制转换为
二进制后不再需要其他操作.
注意:
3个0加到该整数的左边使其成为8位.
(错:书P34)
23:34
33
Example 3.13
用二进制补码表示法将−28存储在8位存储单元中
P33错误,负数溢出错误,图3-7(b)
响应为-4,1100
23:34 22
符号加绝对值表示法的应用 现代计算机不用原码存储整数 加、减运算不方便 0的表示不唯一 符号加绝对值表示法用于存储部分实数
符号加绝对值表示法通常用于采样模拟
信号,如音频。(进行转换简单,不涉及
数字运算)
23:34 23
所有数据都采用统一的数据表示法转换后存入计算机, 当数据从计算机输出时再还原回来。 这种通用的格式称为位模式. 位(bit)是存储在计算机中的最小单位,0或1. 为了表示数据的不同类型,采用位模式. 一个序列长度为8的位模式称为1个字节(byte).
Figure 3.2 位模式
书P29图3.2错误,16个位
23:34
19
Example 3.6
将用符号加绝对值格式表示法存储的 01001101 复原成整数.
解: 因为最左位是0,符号为正。 其余位 (1001101) 转换成十进制数 64+8+4+1=77 加上符号后,该整数是 +77.
23:34
20
Example 3.7
将用符号加绝对值格式表示法存储的 10100001复原成整数 解:
在这种方法中,用于无符号整数的有效范围 (0 ~ 2n−1) 被分成2个相等的子范围. 前半部分表示正整数,后半部分表示负整数.
Figure 3.6 符号加绝对值的表示法
i
符号加绝对值表示法中,最左位定义整数的符号。 0表示正整数,1表示负整数.
23:34 16
符号加绝对值表示法 Sign-and-magnitude representation 在一个 8 位存储单元中,可以仅用 7 位表示 数字的绝对值(不带符号) 最大的整数值,仅是无符号最大数的一半。 在n位单元中,可存储的数字范围是: -(2n-1-1) ~(2n-1-1)
解: 该整数是负数,因此,在转换成二进制后, 对其进行二进制补码运算.
23:34
34
译码二进制补码
第一步,判断符号位。如果最左位为 1,取其 补码;如果最左位为0,保持不变。 第二步,将二进制转换为十进制数。
第三步,确定正负号。如果最左位为 1,取负 号;如果最左位为0,取正号。
23:34
35
23:34 44
Example 3.19
用科学计数法表示数字 −0.0000000000000232 解:将小数点移到数码2之后, 如下所示:
这三部分为:符号 (-)、位移量 (-14) 、定点数 (2.32) 注意:这里指数是负的. -2.32E-14
23:34
45
Example 3.20
用浮点格式表示数字 (101001000000000000000000000000000.00)2
因为最左位是1,符号为负。 其余位 (0100001) 转换成十进制数 32+1=33 加上符号后,该整数是−33. 错误:p32 (书-17)
23:34 21
符号加绝对值表示法的溢出 在n位单元中,可存储的数字范围是: -(2n-1-1) ~(2n-1-1) 有两个0,正0(0000)和负0(1000)
23:34
37
i
二进制补码表示法仅有1个0.
Figure 3.9 二进制补码表示法的溢出
23:34 38
比较
23:34
39
存储实数 Storing reals
实数是带有整数部分和小数部分的数字.
例:23.7是一个实数,整数部分是23,小数部分是 0.7.
尽管固定小数点的表示法可以用于表示实数,
Example 3.14
用二进制补码表示法将存储在 8 位存储单元中的 00001101还原成整数. 解: 最左位是0,因此,符号为正. 该整数需要转换为十进制并加上正号即可.
23:34
36
Example 3.15
用二进制补码表示法将存储在8位存储单元中的 11100110还原成整数.
解: 最左位是1,因此符号为负. 在整数转换成十进制前进行补码运算.
但结果不一定精确或达不到需要的精度.
i
带有很大的整数部分或者很小的小数部分的 实数不应该用定点表示法存储.
23:34 40
Example 3.16
在十进制系统中,假定用一种定点表示法, 右边2个数码,左边14个数码,总计16个数码. 如何表示十进制数1.00234? 该系统的实数精度就会受损,该系统把这个 数字存储为 1.00.
10
Example 3.2
将258存储在16位存储单元中. 解:首先将整数转换为二进制 (100000010)2 左边加7个0使总位数满足16位, 即 (0000000100000010)2 再将该整数存储在存储单元中.
23:34
11
Example 3.3
当译解作为无符号整数保存在内存中的位串 00101011时,从输出设备返回什么? 解:使用第2章的解题过程, 二进制整数转换为十进制无符号整数43. 32+8+2+1=43
数据压缩将在第15章讨论.
23:34 6
3-2 存储数字 STORING NUMBERS
在存储到计算机内存中之前,数字被转换
为二进制系统,如第二章所述. 两个问题需要解决: 1. 如何存储数字的符号.
2. 如何显示十进制小数点.
23:34
7
存储整数 Storing integers
整数是完整的数字 (即没有小数部分). 如134和−125是整数, 而134.23 和 −0.235 则不是. 整数可被当作小数点位臵固定: 小数点固定在最右边. 因此,定点表示法用于存储整数,如图3.4所示. 在这种假设中,小数点是假设的,但是并不存储.
按左负右正的常规交换。(错:书P33)
23:34 24
赋值给负整数和非负整数的位模式如图3.8所示.
Figure 3.8 二进制补码表示法
i
在二进制补码表示法中,最左位决定符号。 如果最左位是0,该整数为正 如果最左位是1,该整数为负
23:34 25
反码运算
介绍补码表示法之前,需要介绍两种运算 反码运算: 该运算可以应用到任何整数 无论是正的还是负的. 该运算简单反转各个位. 即把0位变为1位,把1位变为0位
23:34 43
Example 3.18
在科学计数法中,定点部分在小数点左边只有1位, 位移量是 10的幂次。用科学计数法(浮点表示法) 表示的十进制数 7,425,000,000,000,000,000,000.00
这三部分为:符号 (+),位移量 (21),定点数 (7.425). 注意:位移量就是指数. +7.425E21
23:34
17
Example 3.4
用符号加绝对值格式表示法将 +28 存储在8位 存储单元中. 解:先把该整数转换成7位二进制数. 最左边位臵为0,即存储为8位数.