第三章 数据存储

第三章 数据存储

3.1 数据类型

数据类型包括:

计算机中使用“多媒体”来定义包含数字、文本、音频、图像、视频的信息

3.1.1 计算机内部的数据

  • (bit,binary digit缩写)是存储在计算机中的最小单位:0或1,代表设备的某一种状态。

  • 位模式(位流):表示数据的不同类型,多个位组成一个位模式,由16个位组成的位模式,如图:

    如果我们需要存储1000个位模式,每个16位,需要16000个开关

  • 字节:长度为8的位模式,称为1字节

  • 字:指代更长位模式,比如可以表示1个字 = 2字节1个字 = 4字节 等等

下图表示了不同数据类型的存储:

3.2 存储数字

在存储到计算机内存之前,数字被转换为二进制系统,但是:

  1. 如何存储数字的正负符号
  2. 如何显示小数点

3.2.1 存储整数

整数通常使用定点表示法存储字内存中

整数是完整的数字(即没有小数部分)。例如,134和-125是整数而134.23和-0.235则不是。整数可以被当作小数点位置固定的数字:小数点固定在最右边。因此,定点表示法用于存储整数,如图3-4所示。在这种表示法中,小数点是假定的,但并不存储。

无符号表示法:

无符号整数是只包括零和正数的非负整数。它的范围介于0到无穷大之间。然而,由于计算机不可能表示这个范围的所有整数,通常,计算机都定义了一个常量,称为最大无符号整数,它的值是 ( 2 n − 1 ) (2^n-1) (2n1)​。这里n就是计算机中分配用于表示无符号整数的二进制位数。

存储无符号整数

输入设备存储无符号整数使用以下步骤:

  1. 首先将整数变成二进制数。
  2. 如果二进制位数不足"位,则在二进制数的左边补0,使它的总位数为"位。如果位数大于",该整数无法存储。导致溢出的情况发生,我们后面要讨论。

示例:

例3.1 将7存储在8位存储单元中,使用无符号表示法。
首先将数字转换为二进制数 ( 111 ) 2 (111)_2 (111)2。加5个0使总的位数为8位,即 ( 00000111 ) 2 (00000111)_2 (00000111)2。再将该整数保存在存储单元中。注意,右下角的2用于强调该整数是二进制的,并不存储在计算机中。

例3.2 将258存储在16位存储单元中。
解 首先把数字转换为二进制数 ( 100000010 ) 2 (100000010)_2 (100000010)2。加7个0使总的位数满足16位的要求即得到 ( 0000000100000010 ) 2 (0000000100000010)_2 (0000000100000010)2​。再将该整数存储在存储单元中。

译解无符号整数:

输出设备译解内存中位模式的位串并转换为一个十进制的无符号整数。

例3.3 当译解作为无符号整数保存在内存中的位串00101011时,从输出设备返回什么?
解 使用第2章的解题过程,二进制整数转换为十进制无符号整数43。

溢出:

因为存储单元位的数量限制,可以表达的整数范围是有限的,在n位存储单元中,可以存储的无符号整数的范围仅(为0~2的n次方-1

无符号整数的应用:

无符号整数表示法可以提高存储的效率,因为不必存储整数的符号。这就意味着所有分配的位单元都可以用来存储数字。只要用不到负整数,都可以用无符号整数表示法。具体情况如下:

  • 计数:当我们计数时,不需要负数。可以从1(有时0)开始增长。
  • 寻址:有些计算机语言,在一个存储单元中存储了另一个存储单元的地址。地址都是从0(存储器的第一个字节)开始到整个存储器的总字节数的正数,在这里同样也不需要用到负数。因此无符号整数可以轻松地完成这个工作。
  • 存储其他数据类型:我们后面将谈到的其他数据类型(文本、图像、音频和视频)是以位模式存储的,可以翻译为无符号整数。

符号加绝对值表示法

用于无符号整数的有效范围(0~2的n次方-1)被分成两个相等的子范围,前部分表示整数,后部分表示负数。

  • 该系统中有两个0:正0(0000),负0(1000)
  • 符号加绝对值格式存储一个整数时,需要用1个二进制位表示符号(0表示正,1表示负)
  • 在最左位用于定义符号(0表示正,1表示负)

例3.4 用符号加绝对值表示法将+28存储在8位存储单元中。解先把该整数转换成7位的二进制数。最左边位置0,即存储为8位数。

例3.5 用符号加绝对值表示法将-28存储在8位存储单元中。
先把该整数转换成7位的二进制数。最左边位置1,即存储为8位数。

例3.6 将用符号加绝对值表示法存储的01001101复原成整数。

因为最左位是0,符号为正。其余位(1001101)转换成十进制数77。加上符号后该整数是+77。

例3.7 将用符号加绝对值表示法存储的10100001复原成整数。

因为最左位是1,符号为负。其余位(0100001)转换成十进制数33。加上符号后该整数是-33。

符号加绝对值表示法溢出

正负溢出的两种情况:

二进制补码表示法:

几乎所有的计算机都使用二进制补码表示法来存储n位存储单元中有符号整数

在二进制补码表示法中,最左位决定符号,如果是0,该整数为正,如果是1,该整数为负

反码

反码简单反转各个位,即把0变成1,1变成0,该运算不区分正负数。

补码(有两种运算方式)

方式一:首先,从右边复制位,直到有1被复制,接着反转其余位。

方式二:先取整数的反码,再加1 (取反加1

(2) 以二进制补码格式存储整数
以二进制补码格式存储整数,计算机遵循以下步骤:

  • 将整数变成位的二进制数。

  • 如果整数是正数或零,以其原样存储;如果是负数,计算机取其补码存储。

(3) 从二进制补码格式还原整数

从二进制补码格式还原整数,计算机遵循以下步骤:

  • 如果最左位是1,计算机取其补码。如果最左位是0,计算机不进行操作。
  • 计算机将该整数转换为十进制。

二进制补码表示法-溢出

3.2.2 3种系统的比较

3.2.3 实数

定点表示法

实数是带有整数部分和小数部分的数字

例3.16 在十进制系统中,假定我们用一种小数点右边2个数码,左边14个数码,总共16个数码的定点表示法。那么如果试图表示十进制数1.00234,该系统的实数精度就会受损。该系统把这个数字存储为1.00。

例3.17 在十进制系统中,假定用一种小数点右边6个数码,左边10个数码,总共16个数码的定点表示法。那么如果试图表示十进制数 236 154 302 345.00,该系统的实数精度就会受损。该系统把这个数字存储为6 154 302 345.00。整数部分比实际小了很多。

带有很大的整数部分或很小的小数部分的实数不应该用定点表示法存储。

浮点表示法

实数是带有整数部分和小数部分的数字

浮点表示法在科学中用于表示很小或很大的十进制数。在称作科学计数法的表示法中定点部分在小数点左边只有1个数码而且位移量是10的幂次。

规范化

符号、指数和尾数:

余码系统:

余码系统单精度

余码系统双精度

IEEE的两个浮点标准:

余码系统实数的存储

余码系统实数还原

3.3 存储文本

在任何语言中,文本的片段是用来表示该语言中某个意思的一系列的符号。

3.3.1 代码

3.4 存储音频

3.4.1 采样

3.4.2 量化

3.4.3 编码

如:

3.5 存储图像

下图是一个图像:

3.5.1 光栅图

当我们需要存储模拟图像(如照片)时,就用到了光栅图(或位图)。一张照片由模拟数据组成,类似于音频信息。不同的是数据密度(色彩)因空间变化,而不是因时间变化。这意味着数据需要采样。然而,这种情况下采样通常被称作扫描。样本称为像素(代表图像元素)。换言之,整个图像被分成小的像素,每个像素假定有单独的密度值。

1.解析度
就像音频采样那样,在图像扫描中,我们要决定对于每英寸的方块或线条需要记录多少像素。在图像处理中的扫描率称为解析度。如果解析率足够高,人眼不会看出在重现图像中的不连续。
2.色彩深度
用于表现像素的位的数量,即色彩深度,依赖于像素的颜色是如何由不同的编码技术来处理的。对颜色的感觉是我们的眼睛如何对光线的响应。我们的眼睛有不同类型的感光细胞:一些响应红、黄、蓝三原色(也叫 RGB),而另一些仅仅响应光的密度。

3.图像编码标准
几种用于图像编码的实际标准正在使用中。JPEG(联合图像专家组)使用真彩色模式但压缩图像来减少位的数量(参见第15章)。另一方面,GIF(图形交换格式)使用索引色模式。

3.5.2 矢量图

光栅图有两个缺点,即文件体积太大和重新调整图像大小有麻烦。放大光栅图像意味着扩大像素,所以放大后的图像看上去很粗糙。但是,矢量图图像编码方法并不存储每个像素的位模式。一个图像被分解成几何图形的组合,例如,线段、矩形或圆形。每个几何形状由数学公式表达。例如,线段可以由它端点的坐标描述,圆可以由它的圆心坐标和半径长度来描述。矢量图是由定义如何绘制这些形状的一系列命令构成的。

当要显示或打印图像时,将图像的尺寸作为输入传给系统。系统重新设计图像的大小并用相同的公式画出图像。在这种情况下,每一次绘制图像,公式也将重新估算一次。因此,矢量图也称为几何模型或面向对象图形。

例如,考虑半径为r的圆形。程序需要绘制该圆的主要信息如下:

  • 一个圆的半径r。
  • 圆心的位置。
  • 绘制的线型和颜色。
  • 填充的类型和颜色。

当该圆的大小改变时,程序改变半径的值并重新计算这些信息以便再绘制一个圆。改变图像大小不会改变绘图的质量。

光栅图&矢量图对比

对比光栅图矢量图
优点可以存储图片的精细部分文件体积小
缺点文件体积大、重新调整图片大小影响图片画质存储的图片不精细

3.6 存储视频

当该圆的大小改变时,程序改变半径的值并重新计算这些信息以便再绘制一个圆。改变图像大小不会改变绘图的质量。

光栅图&矢量图对比

对比光栅图矢量图
优点可以存储图片的精细部分文件体积小
缺点文件体积大、重新调整图片大小影响图片画质存储的图片不精细

3.6 存储视频

视频是图像(称为帧)在时间上的表示。一部电影就是一系列的帧一张接一张地播放而形成运动的图像。换言之,视频是随空间(单个图像)和时间(一系列图像)变化的信息表现。所以,如果知道如何将一幅图像存储在计算机中,我们也就知道如何储存视频;每一幅图像或帧转化成一系列位模式并储存。这些图像组合起来就可表示视频。需要注意现在视频通常是被压缩存储的。在第15章,我们将讨论MPEG,这是一种常见的视频压缩技术。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值