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

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 存储视频(跳过)

时间: 2024-10-12 11:25:06

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

爬虫学习之第三章数据存储

第三章 数据存储 第一节 json文件处理: 什么是json: JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据.简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率.更多解释请见:https://baike.baidu.com/item/JS

补基础:自学:计算机科学导论 第四章 数据运算

4.1 逻辑运算:指那些应用于模式中的一个二进制位,或在两个模式中相应的两个二进制位的相同基本运算. 4.1.1 位层次上的逻辑运算 0 代表逻辑 假, 1 代表逻辑 真. 4种操作: 非(NOT):只有一个输入 如果输入是0, 则输出为1.反之亦然 应用:对整个模式求反 与(AND)有两个输入 如果输入都是1, 则输出为1.输入中只要有一位是0,则结果为0 应用:把一个位模式的指定位复位(置0).这种情况下,第二个输入称为掩码,掩码中的0位对第一个输入中相应的位进行复位. 或(OR)有两个输入

第三章 数据存储

1 缓存层 2 存储格式 2.1 行式存储 2.2 列式存储 3 索引 3.1 B+树 3.2 哈希 3.3 T树

Java 线程第三版 第三章数据同步 读书笔记

多线程间共享数据问题 一.Synchronized关键字 atomic一词与"原子"无关,它曾经被认为是物质的最小的单元,不能再被拆解成更小的部分. 当一个方法被声明成synchronized,要执行此方法的thread必须先取得一个token,我们将它称为锁.一旦该方法取得(或者说是获得)锁,它将运行此方法然后释放掉(或者返回)此锁.不管方法时怎样返回的(包括通过异常)该锁会被释放. 二.Volatile关键字 如果变量被标示为volatile,每次使用该变量时都必须从主寄存器中读出

C和指针 (pointers on C)——第三章——数据

第三章 数据 本章是非常重要的,在特定范围内使用.链接属性.存储类型.const.extern和statickeyword使用.几乎所有的公司是C++在采访的第一个问题. 总结: 具有external链接属性(包含external.internal.None)的实体在其它语言的术语里称为全局实体(global),全部cpp里的函数都能够訪问它. 仅仅要声明的时候在函数体或代码块外部(包含main函数).默认的链接属性都是external. 假设声明的在代码块内部,说明它引用的是一个全局变量. 具

第6章 数据存储全方案,详解持久化技术

第6章 数据存储全方案,详解持久化技术 所有的App都可以说是与数据打交道的,离开数据它们什么都不是.那么平时我们怎么存储一些关键的数据呢? 1 持久化技术简介 数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失.保存在内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的,持久化技术则是提供了一种机制可以让数据在瞬时状态和持久状态之间进行转换. Android系统中主要提供了三种方式用于简单地实现数据持久化功能,即文件

.net之工作流工程展示及代码分享(三)数据存储引擎

数据存储引擎是本项目里比较有特色的模块. 第一,使用接口来对应不同的数据库.数据库可以是Oracle.Sqlserver.MogoDB.甚至是XML文件.采用接口进行对应: 1 public interface IWorkflowDB 2 { 3 List<Flow> GetFlows(); 4 bool SaveFlow(Flow flow); 5 bool DeleteFlow(Guid flowId); 6 7 FlowInstance GetFlowInstanceByInstance

第五章 数据存储

第五章 数据存储 我们用解析器解析出数据之后,接下来的一步就是对数据进行存储了,保存的形式可以多种多样,最简单的形式可以直接保存为文本文件,如 TXT.Json.CSV 等等,另外还可以保存到数据库中,如关系型数据库 MySQL,非关系型数据库 MongoDB.Redis 等等.那么本章我们就来统一了解一下数据的保存方式. 5.1 文件存储 文件存储形式可以是多种多样的,比如可以保存成 TXT 纯文本形式,也可以保存为 Json 格式.CSV 格式等,本节我们来了解下文本文件的存储方式. 5.1

算法导论 第三章 and 第四章 python

第三章 渐进的基本O().... 常用函数 % 和  // 转换 斯特林近似公式 斐波那契数 第四章 分治策略:分解(递归)--解决(递归触底)--合并 求解递归式的3种方法: 1:代入法(替代法):猜测一个(靠经验)--数学归纳法 ·2:递归树法:画树p31[第3版中文]p51->递归式--证明 3:主方法: 快速,有些地方不能涉及,递归式不易写出 4.1最大数组问题 分治法: 1.A[low ,mid]  2.A[mid+1, high] 3.包含mid中间(想左和右分别遍历组合找出最大)