首页 > 代码库 > 补基础:自学:计算机科学导论 第三章 数据存储 续

补基础:自学:计算机科学导论 第三章 数据存储 续

3.2.2 存储实数

1. 浮点表示法

该表示法允许小数点浮动,用于维持正确度或精度。

在此表示法中,无论十进制还是二进制,一个数字都由3部分组成:

  • 符号
  • 位移量: 显示小数点应该左右移动构成实际数字的位移量。
  • 定点数:小数点位置固定的定点表示法

例子 3.18 - 3.19 展示了如何使用科学技术法,比如 + 7425000000000000000000.00可表示为 +7.425 * 1021  或者是+7.425E21

 

例子 3.20 用浮点格式表示数字(101001000000000000000000000000000.00)2 

可用科学技术法表示为: 1.01001 * 232   

2. 规范化

十进制: +- d.xxxxxxxxxxx  其中,d是1到9, 每个x是0到9

二进制: +- 1.yyyyyyyyyyy  其中,每个y是0或1

3. 符号、指数和尾数

一个二进制数规范化之后,只存储该数的3部分信息:

  • 符号:可以用一个二进制位来存储(0或1)
  • 指数(2的幂):定义为小数点移动的位数。可正可负
  • 尾数:指小数点右边的二进制数

例如: + 100111.0101 可表示为 +1.0001110101 * 26

            此数符号为+、指数为6、尾数为0001110101

4. 余码系统

尾数可作为无符号数存储。指数是有符号的数,可用余码系统来存储。

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

例 3.22 4位存储单元在数字系统中表示16个整数。

  1. 使用一个单元作为0,分开其他15个,在-7到8的范围中表示整数。注意,他们并不一定是对称的。
  2. 在该范围中增加7个单位到每隔整数中,可以统一把所有整数向右移,使其均为整数而无需改变这些整数的相对位置,避免互相调整。
原系统 -7 –6 – 5 –4 –3 –2 –1 0 1 2 3 4 5 6 7 8
偏移后 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  偏移后的系统称为余7码

 

位移后与位移前,优点在于余码系统中的所有整数都是正数。对于以上的4位存储单元,偏移量为24-1 – 1 = 7

5. IEEE标准

单精度 余127码 符号 指数 尾数
32位   1 8 23
双精度 余1023码 符号 指数 尾数
64位   1 11 52

6. IEEE标准浮点数的存储

1)在S中存储符号(0或1)

2)将数字转换为二进制

3)规范化

4)找到E和M的值

5)连接S,E和M

例 3.23 写出十进制数5.75的余127码(单精度)表示法

解: 1)符号为正,所以S = 0

        2)十进制转换为二进制:5.75 = (101.11)2 

        3)规范化:(101.11)2 = (1.1011)2 * 22

        4)E = 2 + 127 = 129 = (100000012 , M = 1011。需要在M的右边增加19个0使之称为23位。

        5)最终S = 0, E = 10000001, M = 1011000000000000000000

              存储在计算机中的数字是0 1000001 10110000000000000000000

例 3.24 写出十进制数-161.875的余127码(单精度)表示法

解: 1)符号为负,所以S = 1

        2)十进制转换为二进制:-161.875 = (10100001.111)2 

        3)规范化:(10100001.111)2 = (1.10100001111)2 * 27

        4)E = 7 + 127 = 134 = (10000110)2 , M = 0100001111。需要在M的右边增加19个0使之称为23位。

        5)最终S = 1, E = 10000110, M = 01000011110000000000000

              存储在计算机中的数字是1 10000110 01000011110000000000000

7. 将存储为IEEE标准浮点格式的数字还原

1)找到S、E和M的值

2)如果S = 0, 将符号设为证号,否则设为负号

3)找到位移量(E - 127)

4)对尾数规范化

5)将规范化的数字变为十进制以求出绝对值

6)加上符号

例3.26 位模式(11001010000000000111000100001111)2 以余127码格式存储于内存中,求该数字十进制计数法的值。

解:1)首位表示S,后8位是E,剩下23位是M

              S = 1, E = 10010100, M = 00000000111000100001111

        2)符号为负号

        3)位移量 = E –127 = 148 – 127 = 21

        4)将(1.00000000111000100001111)2 * 221 规范化

        5)二进制数为1000000001110001000011.11

        6)绝对值是2104378.75

        7)该数字是-2104378.75

8.上溢和下溢

该表示法不能存储很小或很大的绝对值。

试图存储绝对值很小的数导致下移,存储绝对值很大的数导致上溢情况。

9. 存储0

这种情况下符号 、指数和尾数都设为0

3.3 存储文本

可以使用位模式表示任何一个符号。需要多少位来表示一个符号,取决于该语言集中到底有多少不同的符号。

位模式的长度,与符号的数量,它们之间的是对数的关系。如果需要2个符号,位模式长度是1位(log2 2 = 1).

代码

1)ASCII

该代码使用7位表示每个符号,总共可定义27 = 128种不同的符号。

2)Unicode

该代码可表示最大232 = 4294967296个符号。

3.4 存储音频(跳过)

3.5 存储图像

  • 光栅图
  • 矢量图

3.5.1 光栅图

存储模拟图像(如照片)时,就用到了光栅图(或位图)。

1)解析度

图像处理中的扫描率称为解析度

2)色彩深度

  1. 真彩色
    使用24位来编码一个像素。每个三原色(RGB)都表示为8位,8位模式可以表示0-256之间的一个数字,所以每种颜色都由0到255之间的三维数字表示。
  2. 索引色
    索引色仅使用真彩色中的一部分。

3)图像编码标准

JPEG使用真彩色模式,但压缩图像来减少位的数量。GIF使用索引色模式。

光栅图的两个缺点:

  • 文件尺寸太大
  • 重新调整图像大小有麻烦

放大光栅图像就意味着扩大像素,所以扩大后的图像看上去很粗糙。

3.5.2 矢量图

矢量图图像编码方法不存储每个像素的位模式。一个图像被分解成几何图形的组合。

矢量图适合应用程序采用主要的几何元素来创建图像。例如,flash这样的程序。

3.6 存储视频(跳过)

补基础:自学:计算机科学导论 第三章 数据存储 续