本文为本人学习《计算机科学导论》一书所作笔记,原书作者Behrouz forouzan
3 数据存储
3.1 列出计算机中使用的五种不同的数据类型
计算机行业术语“多媒体”表示包含数字、文本、音频、图像、视频的信息。
计算机内部只用位模式,外部则有多种数据类型。今天计算机使用各种双态设备来存储数据。
位模式表示一个序列,也称位流。
通常以长度为8的位模式称为1字节。同样的位模式在不同数据类型中表示不同场景。但在计算机中,计算机内存存储这些所有数据而无需辨别它们是何种数据类型。
存储数据前数据压缩,传输和存储数据时错误检测和纠正。
3.2 描述不同的数据如何以位模式存储在计算及内部
3.3 描述整数如何以无符号格式,符号加绝对值格式,二进制补码格式存储
定点表示法用于存储整数,小数点固定在最右边,小数点是假定的,并不存储。
整数太大以至于无法定义为整数来存储时,可能将整数作为整数部分为0的实数来存储。
3.3.1 无符号表示法
无符号整数是非负整数,通常计算机都定义了最大无符号整数
2
n
−
1
2^n-1
2n−1,
n
n
n为计算机分配的无符号整数位数。
在存储时,先转化为二进制数,不足n位左补0,超过n位则溢出。
溢出时丢掉最左边的位。
无符号整数存储效率高,用于计数,寻址,存储其它数据类型。
3.3.2 符号加绝对值表示法
在符号加绝对值表示法中,最左位用于定义整数的符号,0表示正,1表示负,该系统中有两个0,正0和负0
有正溢出和复溢出
符号加绝对值表示法不用于存储整数,而用于存储部分实数。
3.3.3 二进制补码表示法
几乎所有计算机都用二进制补码表示法来存储位于n位存储单元中的有符号整数。
二进制补码表示法仅有一个0
3.3.3.1 反码运算
各位直接取反。两次反码运算恢复原数
3.3.3.2 补码运算
一种求补码的方法是从右复制到第一个1,然后剩下的位取反码。
另一种是求反码后加上1
符号位决定了数的正负,但在取补码运算时也参与运算
两次补码恢复原数。
3.3.3.3 以二进制补码存储整数
存储步骤如下:1.将整数转化为n位二进制数;2.非负数原样存储,负数取其补码存储。
还原步骤如下:1.最左为1,去其补码;最左为0,计算机不进行操作。2.转换为十进制。
当今,二进制补码表示法是计算机用于存储整数的标准表示法。方便运算。
3.4 描述实数如何以浮点格式存储在计算机中
带有很大的整数部分或很小的小数部分的实数不应该用定点表示法存储。
3.4.1 浮点表示法
一个数字的浮点表示法由符号S,位移量E,定点数M组成。
3.4.1.1 规范化
在小数点左边使用唯一的非零数码。
指数是有符号整数,但在存储指数时,使用余码表示法而非补码表示法。对连续数码整体偏移至非负整数。
偏移量为
2
m
−
1
−
1
2^{m-1}-1
2m−1−1,
m
m
m的大小为指数所占存储单元的位数。
尾数是小数点右边的二进制数。尾数是作为无符号整数存储的,和符号一起考虑,则成了带符号的小数部分,像符号加绝对值存储的整数那样对待。但区别是左侧不能加0,否则会改变大小。
3.4.1.2 IEEE标准
IEEE定义了集中存浮点数的标准,单精度32位(1,8,23)又称余127码、双精度64位(1,11,52)又称余1023码。
其中单精度浮点数在IEEE754定义中情况如下:
定义当指数部分不是全0或全1时,尾数隐藏位为1,指数实值为指数值-偏移量(127)
当指数部分全0时,称为非规格数,此时尾数隐藏位为0,当尾数也为全0时,代表0,根据符号位不同,有+0和-0之分。正负0在有些程序中有特殊作用。有些编程语言则不作区分。当尾数不为全0时,则尾数部分应视为0.xxxxxxxx······x(小数点后共23位),指数部分此时视为固定值-126,以实现逐渐溢出的效果。
当指数部分为全1时,如果尾数部分为全0,则为
∞
\infty
∞,根据符号位的不同可分为
+
∞
+\infty
+∞或
−
∞
-\infty
−∞。当尾数部分不为全0时,视为NaN。
故单精度浮点数所能表示的最大正值应为
(
1
−
2
−
24
)
∗
2
+
128
(1-2^{-24})*2^{+128}
(1−2−24)∗2+128,最小正小数应为
2
−
23
∗
2
−
126
=
2
−
149
2^{-23}*2^{-126}=2^{-149}
2−23∗2−126=2−149(但书上是
(
1
−
2
−
1
)
∗
2
−
127
(1-2^{-1})*2^{-127}
(1−2−1)∗2−127不知道咋算出来的,求指教)。
3.4.1.3 浮点数的截断错误
在原始数字和还原后的数字的差异称为截断错误。在宇航业的计算中影响很大。需使用更大的内存单元和其他表示法。
3.5 描述文本如何以不同编码系统存储在计算机中
文本由符号集中的符号构成,符号在计算机中由特定的位模式表示,位模式的长度取决于符号的数量。 l o g 2 N log_2N log2N, N N N为符号的数量。常用的文本编码有ASCII(7位),Unicode(32位)。
3.6 描述音频如何通过采样、 量化、编码存储在计算机中
音频是模拟数据,计算机存储其在特定时间间隔的信号大小。采样率由音频信号频率决定,通常用40000Hz。
采样后需要通过量化,编码。每样本位的数量又称为位深度。位率
R
R
R=位深度
B
∗
B*
B∗采样率
S
S
S。
3.6.1 声音编码的标准
音频编码的主流标准是MP3,每秒44100个样本,位深度为16,信号达到705600b/s的位率。
3.7 描述图像如何以光栅和矢量图模式存储在计算机中
图像在计算机中采用光栅图和矢量图。
3.7.1 光栅图
光栅图即位图,样本称为像素(代表图像元素),每个像素假定有单独的密度值。采样称为扫描。
在图像处理中的扫描率成为解析度,每英寸方块需要记录多少像素。用于表示像素的位的数量,即色彩深度,依赖于像素的颜色是如何由不同的编码技术来处理。一些响应红黄蓝三原色(RGB),另一些仅仅响应光的密度。
真彩色用24位来编码一位像素,每个原色用8位表示,共包含超过1600万种颜色。
索引色又称调色板色,通常用8位,仅使用庞大颜色范围的一部分。
缺点(文件体积太大,重新调整图像大小有麻烦),放大则像素降低。
3.7.1.1 图像编码标准
JPEG使用真彩色,压缩图像,GIF使用索引色模式。
3.7.2 矢量图
矢量图不存储每个像素的位模式,一个图像被分解成几何图形的组合。每个几何形状由数学公式来表达,矢量图是由定义如何绘制这些形状的一系列命令构成的。故可以根据显示的大小重新计算图像。因此矢量图也称为几何模型或面向对象的模型。
缺点:不适合存储照片图像的细微精妙,
优点:适合应用程序采用几何图形创建图像,如CAD,电脑字体,Flash。
3.8 描述视频如何以图像随时间变化的表示存储在计算机中
视频中的图像称为帧,逐帧播放成为视频。MPEG是一种常见的视频压缩技术。