net_程序猿

导航

第三章 - 数据存储

3.1数据类型

分为数字,文本,音频,图像,视频

计算机内部的数据

  位(bit,binary digit)时存储在计算机中的最小单位。他是0或1。

位模式

  为了表示数据的不同类型,应该使用位模式,他是一个序列,有时也被称为位流。通常长度为8的位模式被称为1字节

3.2.1存储整数(定点表示法)

定点表示法用于存储整数,在这个表示法里,小数点是假定的,但并不存储。

但是,用户或程序可能将整数作为小数部分为0的实数存储,这是可能的,当整数太大以至于无法定义为整数来存储。为了更有效的利用计算机内存,无符号和有符号的整数在计算机中存储方式是不同的。

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

无符号整数[0,+)

最大无符号整数的值为2n-1(n表示计算机中分配用于表示无符号整数的二进制位数)

 

1)存储无符号整数

步骤:1.将整数变成二进制数

   2.如果二进制位数不足n位,则在二进制数的左边补0,使它的总位数为n位。如果位数大于n,则会导致溢出。

3)溢出

  可以理解为首尾相连的数字[0,15]共4个位当15+1时,结果则会溢出为0

4)无符号整数的应用

  计数,寻址,存储其他类型

 

符号加绝对值表示法

这种格式在存储整数中并不常用,但该格式用于在计算机中存储部分实数。

1)表示方法:

  有效范围[0,2n-1]被分成了两个相等的子范围,前半个表示正整数,后半个表示负整数。注意:这里面有两个0:正0和负0。此表示法中,需要用1位来表示符号(0正1负),所以在n位单元中可存储的数字范围是[-(2n-1-1),+(2n-1-1)]

 

2)溢出情况同上

3)应用

  符号加绝对值表示法不用于存储整数,而用于存储部分实数,此表示法通常用于采样模拟信号,比如,音频

二进制补码表示法(此表示法中只有一个0)

表示方法:无符号整数的有效范围[0,2n-1]被分为两个相等的子范围,第一个子范围用来表示非负整数,第二个子范围用来表示负整数。这两半按照左负右正的常规互相交换。此表示方法中,最左位决定符号,0正1负。

 

反码和补码

反码:反转各个位

补码:从右向左复制位,直到有1被复制,接着,反转其余的位(反码+1)

1)以二进制补码格式存储整数

  将整数变成n位的二进制数

  如果整数为非负数,则以其原样存储,如果是负数,则取其补码存储。

2)以二进制补码格式还原整数

  如果最左位为1,则取其补码,如果最左位为0,则原样取出。

  将该整数转换为十进制。

溢出情况同上

 

实数

浮点表示法:允许小数点浮动,我们可以在小数点左右有不同数量的数码。

一个数字的浮点表示法由3部分组成:符号,位移量和定点数

第一部分是符号,+/-

第二部分显示小数点应该左右移动构成实际数字的位移量

第三部分是小数点位置固定的定点表示法

eg:+   7.425  X  1021(+7.425E21)

   符号 定点部分    位移量(21)

 

规范化

在一个二进制数规范化之后,只存储一个数的三部分信息:符号,指数,尾数。

eg:  符号  指数  尾数

    +    26 X 1.000333

    +     6     000333

  1和小数点是隐藏的,没有存储

符号:一个数的符号可以用一个二进制位来存储(0或1)

指数:指数定义为小数点移动的位数,幂可正可负,余码表示法是用来存储指数位的方法

尾数:指小数点右边的二进制数。尾数是作为无符号整数存储的。(书后还有一段p话,感觉矛盾,如果后面讨论到则回来补充)

 

余码

在该系统中,正的和负的整数都可以作为无符号数存储。为了表示正的或负的整数,一个正整数(一个偏移量)加到每一个数字中,将它们统一移到非负的一边。这个偏移量的值是2m-1-1,m是内存单元存储指数的大小。

eg

我们可以用4位存储单元在数字系统中表示16个数,分为[-7,-1]0[1,8],其中增加7个单位到每个整数中,可以统一的把数往右移。新系统称为余7,或者偏移量为7的偏移表示法。(自行脑补图像)

IEEE标准

单精度的浮点数

                 S           E           M

余127码 符号1位 指数8位 尾数23位

双精度的浮点数

余1023码 符号1位 指数11位 尾数52位

 

IEEE标准浮点数的存储步骤:

1.在S中存储符号

2.将数字转换为二进制

3.规范化

4.找到E和M的值

5.连接S,E,M

 

还原请自行解决

备注:书中的上溢和下溢有问题(个人觉得)

存储文本

ASCII

美国信息交换标准码,该代码使用7位表示每个符号,即定义了27个符号。

Unicode

使用32位来表示一个符号 最多可以表达232个符号。

 

存储音频

1.采样:在模拟信号上选择数量有限的点来度量他们的值并记录下来。

2.量化:将样本的值截取为最接近的整数值的一种过程。

3.编码:编码成位模式。

 

存储图像

光栅图:

扫描和像素

解析度:图像扫描中,每个单位上的像素量。

色彩深度:用于表现像素的位的数量。1.真彩色,使用24位来编码一个像素,每个RGB用8位表示。

                 2.索引色,从大的色彩集中选择一些颜色(通常是256种)并对其简历索引,对选中的颜色赋0~255之间的值。

文件体积大,易失真

 

矢量图:

一个图像被分解成几何图形的组合,每个几何形状由数学公式来表达。矢量图是由定义如何绘制这些形状的一系列命令构成的。

 

posted on 2015-12-09 00:23  net_程序猿  阅读(411)  评论(0编辑  收藏  举报