您的位置:首页 > 理论基础

深入理解计算机系统--信息的表示和处理

2012-10-22 16:16 483 查看
1. 信息定义和运算

现代计算机存储和处理的信息以二值信号表示, 其定义就是一串二进制位, 至于如何解释就需要看这些位所处的上下文了, 它可能表示一个整数, 一个字母, 一个浮点数,甚至是一条计算机指令。

可以说, 计算机中的信息就是位+上下文。

孤立的讲, 单个的位不是非常有用, 只有把位组合起来, 并赋予某种解释才有意义; 当把要解释或处理的对象用一组位表示时, 这时就是编码。计算机从早期的数学运算应用,到如今就会应用在各个领域, 各种编码都越来越复杂, 但最终在计算机中都以一组二进制位表示。

无论是何种信息的处理, 都离不开数值运算, 在本章中就研究三种最重的数值表示: 无符号数, 有符号数 和浮点数。

无符号数以源码表示, 是传统的二进制表示法; 有符号数采用补码表示法; 浮点数采用以2为基数的科学表示法。

作为开发人员, 需要理解整数运算、浮点运算的特性及细节, 理解底层计算机运算与上层数值运算的关系。

比如,整数运算可能溢出, 溢出之后可能会带来令人吃惊的结果; 浮点数表示的数值范围更大, 但不精确, 运算是不可结合的, (3.14 + 1e20) - 1e20 与 3.14 + (1e20 - 1e20)运算结果是不一致的,前者为0, 后者为3.14

2. 信息存储和定位

大多数计算机使用8位的块,或者字节, 作为最小的可寻址存储单位, 而不是访问存储器中的位。 机器级程序将存储器视为一个非常大的字节数组, 称为虚拟存储器;存储器的每个字节都由一个数字标识, 称为它的地址; 所有可能地址的集合就构成了虚拟存储空间。值得注意的是, 这里的虚拟地址空间只是展现给机器级程序的概念性映像, 实际实现是把RAM、磁盘存储等和操作系统结合起来, 为程序提供一个看上去统一的字节数组。

3. 字、字节序

每台计算机都由一个字长, 指明整数和指针数据的标称大小。 因为虚拟地址是以一个字长编码的, 所以决定了最重要的系统参数: 虚拟地址空间的大小。

对于跨越多字节的信息对象, 必须建立两个规则: 地址 和 排列顺序。 所谓的排列顺序就由字节序决定: 最低有效字节在最前面的是little endian, 反之, 最高有效字节在最前面的就是 big endian.

4. 浮点数表示

关于整数的表示在此不提, 只说明浮点数的表示。

目前几乎所有机器都采用IEEE浮点表示, V=(-1)*s X M X2*E. (2*E 表示2的E次幂)

其中:

s 为符号位, M 为尾数, E 为阶码。

IEEE 单精度浮点数对s,E,M分别采用1,8,23 位进行编码, 得到一个32位的浮点数;

IEEE爽精度浮点数对s,E,M分别采用1,11,52 位进行编码, 得到一个64位的浮点数;

s 位都位于最高有效位, 排列如下:

s - E -M
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: