第三章 数据表示法

1 数据和计算机

数据和计算机的联系

计算机存在的意义是管理数据。

数据和信息的区别

数据:基本值。

信息:经过组织或处理后有含义的数据。

计算机可以存储、表示的数据包括

  1. 数字
  2. 文本
  3. 音频
  4. 图像和图形
  5. 视频

上述这些数据最终都被存储为二进制数字,简单说即是由0和1表示。

数据压缩

2 模拟数据和数字数据

自然办的大部分都是连续和无限的。而计算机则是有限的。计算机内存和其他硬件设备用来存储和操作一定量的数据空间只有那么多。

表示数据的方法有两种:模拟法和数字法。

模拟数据是一种连续表示法,模拟它表示的真实信息。

数字数据是一种离散表示法,把信息分割成了独立的元素。

二进制单位转换

bit:位,byte:字节,M:兆,1G:1G。

1byte=8bit

1KB=1024byte

1MB=1024KB

1G=1024MB

1T=1024GB

为什么使用二进制,而不使用十进制或其他数字系统来表示?

  1. 二进制数在物理上最容易实现。例如,可以只用高、低两个电平表示"1"和"0",也可以用脉冲的有无或者脉冲的正负极性表示它们。
  2. 二进制数用来表示的二进制数的编码、计数、加减运算规则简单。
  3. 二进制数的两个符号"1"和"0"正好与逻辑命题的两个值"是"和"否"或称"真"和"假"相对应,为计算机实现逻辑运算和程序中的逻辑判断提供了便利的条件。

3 数字数据的表示法

整数表示法

负数表示法

进进制补码

数据溢出

实数表示法

4 文本表示法

字符数是有限的,所以只要给所有字符都赋予一个二进制字符串来表示,我们可以称这些字符的集合称为字符集。

不同语言所使用的字符数是不相同的,所以当今的计算机系统出现了多种字符集。

ASCII字符集

美国信息互换标准代码(American Standard Code for Information Interchange)。以前的ASCII字符集用7位表示每个字符,可以表示128个不同的字符。现在的ASCII字符集使用8位表示每个字符,可以表示256个字符。

Unicode字符集

Unicode字符集称为统一码,使用16位(双字节)表示每个字符,能够表示多达6万5千多个字符。

文本压缩

为了减少文本占用的存储空间以及有效地在两台计算机之间传递文本,所以通常会使用文本压缩功能。

关键字编码

简单的说,将经常使用的多个字符的组合使用某个字符代替。例如:将 The 与‘!‘对应,将 You与"@"对应。这种方法有局限点,关键字编码的字符不能出现在原始文本中。

行程长度编码

简单的说,将连续出现的字符用数值和字符表示。例如:将AAAAAAA用*A7表示,*为特殊标志,A为重复出现的字符,7为字符出现的次数。

赫夫曼编码

简单的说,是用变长的二进制串表示字符,使常用的字符具有较短的编码。

例如:


赫夫曼编码


字符


赫夫曼编码


字符


00


A


111


R


01


E


1010


B


100


L


1011


D


110


O

   

那么单词DOORBELL的二进制编码如下:

1011 110 110 111 1010 01 100 100

而根据ASCII字符集时的二进制编码如下:

01000100 01001111 01001111 01010010 01000010 01000101 01001100 01001100

5 音频信息表示法

计算机可以记录、存储和播放声音(如发音、音乐等)。声音或音频数据是以两种不同的方法进行表示的:波形或M I D I音乐。两者之间的区别类似于磁带录音与钢琴表演。

波形音频

波形音频是声音的数字形式表示。对于声音的数字记录来说,会周期性地对声音波形进行采样并以数字数据的形式进行存储。音乐、发音和声音都可以以波形形式进行存储。

采样速率指的是在记录过程中,每秒钟对声音测量的次数。采样速率以H z为单位。每秒钟采样1 0 0 0次即为1 0 0 0 H z或1 K H z。声音每秒钟需要88 200个字节。而立体声需要两倍的存储空间,因为需要记录两个记录来达到立体声的效果。但采样速率为 4 4 . 1 K H z时,在1 . 4 4 M B的软盘上,仅仅能存储8秒钟的音乐。而典型的一辑摇滚乐(4 5分钟)需要4 7 5 M B。

计算波形文件的例子

声卡对声音的处理质量可以用三个基本参数来衡量,即采样频率、采样位数和声道数。采样频率是指单位时间内的采样次数。采样频率越大,采样点之间的间隔就越小,数字化后得到的声音就越逼真,但相应的数据量就越大。声卡一般提供11.025kHz、22.05kHz和44.1kHz等不同的采样频率。

采样位数是记录每次采样值数值大小的位数。采样位数通常有8bits或16bits两种,采样位数越大,所能记录声音的变化度就越细腻,相应的数据量就越大。

采样的声道数是指处理的声音是单声道还是立体声。单声道在声音处理过程中只有单数据流,而立体声则需要左、右声道的两个数据流。显然,立体声的效果要好,但相应的数据量要比单声道的数据量加倍。

不经过压缩声音数据量的计算公式为:

数据量(字节/秒)= (采样频率(Hz)*采样位数(bit)*?声道数)/ 8,其中,单声道的声道数为1,立体声的声道数为2。

应用举例

【例1】请计算对于5分钟双声道、16位采样位数、44.1kHz采样频率声音的不压缩数据量是多少?

解:

根据公式:

数据量=(采样频率×采样位数×声道数×时间)/8

得,数据量=[44.1×1000×16×2×(5×60)] /(8×1024×1024)

=50.47MB

因此,声音的不压缩数据量约为50.47MB。

计算时要注意几个单位的换算细节:

时间单位换算:1分=60秒

采样频率单位换算:1kHz=1000Hz

数据量单位换算:1MB=1024×1024=1048576B

6 图像和图形的表示法

位图图像和矢量图像这两种编码方法的不同,影响到图像的质量、存储图像的空间大小、图像传送的时间和修改图像的难易程度。

颜色表示法

颜色是我们对到达视网膜的各种频率的光的感觉。我们的视网膜有有三种颜色感光视锥细胞,负责接收不同频率的光。这些感光器分别对应于红、绿和蓝三种颜色。人眼可以觉察的其他颜色都由这三种颜色混合而已。

在计算机中,颜色通常用RGB(red-green-blue)值表示,这其实是三个数字,说明了每种原色的相对比例。

数字化表示法

位图图像

计算机通过指定每个独立的点(或像素)在屏幕上的位置来存储位图图像。

像素

显示屏幕是由一行行或一列列的像素(点)组成的,打个比方,显示器的分辨率为1024*768像素,即表示每一行有1024个像素,每一列有768个像素。

用二进制表示位图图像

最简单的位图图像是单色图像。单色图像包含的颜色仅仅有黑色和白色两种,即是指每一个像素点只有黑色和白色两种。一个像素点有两种颜色的情况,因此可以用1 bit表示一个像素点,假设有一幅1024*768的单色图像,那它的文件大小是:1024*768*1=786432bit,即是约98KB。继续推算,假设有一幅256色图像,由此我们知道一个像素点有256种颜色的情况,需要用8bit来表示一个像素点,那它的文件大小是:1024*768*8=6291456bit,即是约786KB。

关于位图图像文件格式

位图图像通常用于现实中的图像,如扫描的图像。文件的扩展名为: . b m p,. p c x,. t i f,. j p g和. g i f。需要注意的是,除了BMP图像文件是未经过压缩等处理外,其它文件格式都是经过某些压缩处理的,主要是为了节省空间。所以在做测试时,应该对图像文件使用bmp文件格式进行保存。

位图图像的修改

因为位图文件用一系列的比特来表示像素,因此可以修改或编辑单个的像素,也可以同时修改一个区域的像素。

图形矢量表示法

矢量图像由一串可重构图像的指令构成。在创建矢量图片的时候,可以用不同的颜色来画线和图形。然后计算机将这一串线条和图形转换为能重构图像的指令。计算机只存储这些指令,而不是真正的图像。矢量图像看起来没有位图图像真实。

简单地说,保存的是画图像的命令,而不是图像本身。

矢量图像的优点

存储空间小、方便修改(可以把矢量图像的一部分当作一个单独的对象进行修改)。

关于矢量图像文件格式

包含矢量图像的文件的扩展名为:. w m f,. d x f,. m g x和. c g m。

7 视频

视频与图片的关系

视频由一系列的帧组成,每个帧是一幅静止的图片,并且图像也使用位图文件形式表示的。然而,视频每秒钟需要显示3 0帧(一般来说,视频至少要24帧才不会觉得卡),这意味着视频需要巨大的存储空间。

一个例子

一幅全屏的、分辨率为6 4 0×4 8 0的2 5 6色图像有307 200个像素。因此,一秒钟视频需要的空间是3 0乘上这个数,即9 216 000个字节,大约9兆(如图1 0 - 1 7) 。两小时的电影需要66 355200 000个字节,超过6 6 G字节!居然还是一个低质量的视频--!算一算,每秒要处理近10M的视频数据,我台破电脑肯定要挂掉。

视频压缩

不过,现在一部两小时的高清电影大概就4G到6G,究竟是什么原因导致文件大幅度缩水呢?

这是因为视频经过视频编码器压缩过,主要使用时间压缩和空间压缩两种方式。时间压缩将查找连续帧之间的差别。如果两个帧中的图像大部分都没有改变,那么相同的部分就不需要再存储,信息量自然就减少了很多。空间压缩将删除一个帧中的冗余信息,把颜色相同的像素(如湛蓝的天空)聚集在块(矩形区域)中,存储的不是每个像素的信息,而是块的颜色和坐标。空间压缩的方式实际上是压缩每一张图片,所以也是图片压缩的方式之一。

时间: 2024-08-08 05:35:13

第三章 数据表示法的相关文章

第三章信息编码与数据表示(一)

第三章信息编码与数据表示 一.进位计数值 基本概念 基数R 指在这种进位制中允许使用的基本数码个数.基数为R的数制称为R进制数. R进制数的主要特点就是逢R进1 权Wi 权也称位权,指某一位i上的数码的权重值,即权与数码所处的位置i有关. Wi =Ri. 假设任意数值N用R进制数来表示,形式为: N=(Dm-1Dm-2-D0 .D-1D-2 -D-k )R 其中,Di为该进制的基本符号,Di∈[0,R-1],i = -k, -k+1, --,m-1:小数点在D0和D-1之间. (11011.01

读《构建之法》前三章有感

最近这几天一直下雨,我的心犹如构建之法一般的复杂,但是,听着雨声,仔细的思考后,感觉构建之法在我的心中慢慢的变得清晰了.这几天看了<构建之法>的前三章后,心有所感,在这里就粗略的讲一讲我的感想,首先是第一章,主要讲了软件工程师什么,软件又是什么,软件的各种要素等等,让我对软件有了一定的了解,同时深有所感的是,一个软件,不论好与坏,都是应人们需求所产生的,所有的软件都不是一天就可以完成的,有的需要很久很久,同时还需要一个团队的合作才能呈现出一个软件,软件工程这门学问不是一个理论的学问,更多的是一

《构建之法》第三章学习心得

这周我学习了<构建之法>第三章,讲述了软件工程师的成长.软件系统的绝大部分模块都是由个人开发或维护的.在软件工程的术语中,这些单个的成员叫做Individ-ual Contributor(IC).IC在团队中的流程是怎么样的呢?以开发人员为例,流程如下. 1.通过交流.实验.快速原型等方法,理解问题.需求或任务 2.提出多种解决办法并估计工作量 3.其中包括寻找以前的解决方案,因为很多工作是重复性的 与相关角色交流解决问题的提案,决定一个可行的方案 执行,把想法变成实际中能工作的代码,同时验证

构建之法第三章读书心得

在构建之法第三章中,我们主要学习了个人能力的衡量与发展. 初级软件工程师有以下几个成长阶段:1.积累软件开发相关的知识,提升技术技能. 2.积累问题领域的知识和经验. 3.对通用的软件设计思想和软件工程思想的理解 4.提升职业技能 5.实际成果 软件开发的工作量和质量你的衡量标准:1.项目.任务有多大? 2.花了多少时间? 3.质量如何?交付的代码中有多少缺陷?

20179215 《构建之法》第三章

<构建之法>第三章 读书笔记 ?本章为软件工程师的成长,主要介绍了评价软件工程师水平的主要方法,技能的反面,TSP对个人的要求. 一.个人能力的衡量与发展 ?软件开发流程:软件开发流程包括团队的流程,也包括个人的流程 ?软件系统的绝大部分模块都是由个人开发或维护的.在软件工程的术语中,我们把这些单个的成员叫做Individ-ual Contributor(IC).IC在团队中的流程如下. 通过交流.实验.快速原型等方法,理解问题.需求或任务 提出多种解决办法并估计工作量 其中包括寻找以前的解决

构建之法前三章读后感

一. 软件作为一个产品,在提供用户使用前经历了许多工序,我们用工程的方式将开发软件的工序,过程加以工程化,系统化.成立了一套完整的体系后,有利于帮助我们开发软件,乃至于大型的系统. 软件具有一定的特殊性,使得软件工程师们做开发提升了一定的难度,但软件工程有助于软件系统的开发,帮助工程师们设计,构建,测试和维护软件.所以,软件工程的最终目的是帮助工程师们创造“足够好”的软件,提高软件的质量,用户满意度,可靠性,可维护性等. 第一章问题:怎么才算是一个真正的软件工程师? 二.   一个优秀的软件,通

0320 《构建之法》前三章观后感

第一章.为我们解释什么是软件,什么是软件工程,读完这章对这些概念有一定的认识这章让我明白,代码不能盲目的敲,好的软件并非两三天,并非一两个人就能赶出来的,需要大家的精诚合作.同时,在编写程序之前,还需要做一系列的分析.设计,要满足客户的需求,后续还要对软件进行测试.维护等.在这之前,我一直觉得能把程序运行,能有正确的结果,那就完成任务了,可这只是整个软件流程的一部分而已.看了邹老师的书,才知道其实创新有很多的方面,除了技术,还有商业思路,差异化等等,这些都给了我很大的感触,作为一名程序员,我们不

构建之法(前三章)读后感

第一章:软件工程的定义是:选定合适的开发模型,然后根据客户的需求分析,在给定成本的前提下开发可靠性,可维护性的软件.但这个过程的实现需要团队的共同合作,软件完成后还要根据客户的要求进行修改,发布后的维护,所以说软件工程是一个长久性的工作. 第二章:讲的是软件制作后期所遇到的许多测试,黑盒测试,百盒测试等.测试能力也属于个人能力的一种.而里面所说到的单元测试就是为了提高程序的健壮性,提高程序的可靠性和稳定性. 第三章:成为一个出色的软件工程师需要不断的接触各类软件硬件,吸收更多的知识 ,所谓孰能生

《构建之法》第一、二、三章读后感

第一章系统地告诉了我们什么是软件,也就是软件=程序+软件工程,软件工程是怎样的一个存在,包括软件的种类和性质,都系统地分析给我们,更是强调了一个工程团队对软件工程的重要性,同时也给我们指出了某些软件会出现的问题,比如说会有BUG,给我们介绍了当遇到这些问题的时候需要怎样去解决问题和修正BUG,完成客户给我们的要求.总的来说,第一章就是带我们走进了软件工程的线索. 第二章叫做个人技术和流程,在这一章中我看到了程序执行过程中耗时最多的三个函数,三个函数加起来占用了整个程序的84%的时间,并给我们分析