<div class="markdown_views">
<h1 id="21-数据与文字的表示方法"><a name="t0"></a>2.1 数据与文字的表示方法</h1>
2.1.1 数据样式
在选择计算机的表示方法时,要考虑
1. 数的类型(小数,整数,实数和复数)
2. 数值范围
3. 数值精确度
4. 数据存储和处理所需的硬件代价
计算机中常用的数据表示格式:1. 定点格式;2. 浮点格式
定点格式:数据范围有限,要求的处理硬件比较简单
浮点格式:数据范围较大,要求的处理硬件比较复杂
1.定点数的表示方法:
参与运算的数的小数点位置固定不变。
Xn” role=”presentation”>XnXn |  Xn−1 ... X1 X0” role=”presentation”> Xn−1 ... X1 X0 Xn−1 ... X1 X0 |
---|---|
符号 | 量值(尾数) |
纯小数:
小数点在Xn” role=”presentation”>XnXn之间。
小数点固定在最高位之后称为定点小数。若机器字长为n+1位,数值表示为:
X=Xn.Xn−1 ... X1 X0” role=”presentation”>X=Xn.Xn−1 ... X1 X0X=Xn.Xn−1 ... X1 X0。
例如:1111表示-0.875
绝对值最小:各位均为0,|X|min=0” role=”presentation”>|X|min=0|X|min=0;
绝对值最大:各位均为1,|X|max=1−2−n” role=”presentation”>|X|max=1−2−n|X|max=1−2−n;
纯整数:
小数点在X0右边。
绝对值最小:各位均为0,|X|min=0” role=”presentation”>|X|min=0|X|min=0;
绝对值最大:各位均为1,|X|max=2n−1” role=”presentation”>|X|max=2n−1|X|max=2n−1;
PS:
0.1111111 = 1.0000000 - 0.0000001 = 1 - 2−7” role=”presentation”>2−72−7;
0 1111111 = 1 0000000 - 1 = 27” role=”presentation”>2727 - 1;
2.浮点数的表示方法:
- 任意十进制N” role=”presentation”>NN
- 任意二进制N” role=”presentation”>NN
-M” role=”presentation”>MM 为浮点数的尾数,是一个纯小数
-e” role=”presentation”>ee 是比例因子的指数,称为浮点数的指数,是一个整数
IEEE754标准
S” role=”presentation”>SS | E” role=”presentation”>EE | M” role=”presentation”>MM |
---|---|---|
31(1) | 30———23(8) | 22———0(23) |
-S” role=”presentation”>SS = 1表示负数。
-E” role=”presentation”>EE 是阶码,占用8位;阶码采用移码方法来表示正负指数。
指数真值变成阶码E” role=”presentation”>EE.
当尾数的值不为0时,尾数域的最高位应为1,这称为浮点数的规格化表示。否则以修改阶码的同时左右移动小数点位置的方法,使其变成规格化数形式。
32位浮点数x的真值表示:
x=(−1)S×(1.M)×2 E−127” role=”presentation”>x=(−1)S×(1.M)×2 E−127x=(−1)S×(1.M)×2 E−127;
e+127=E” role=”presentation”>e+127=Ee+127=E.
其中尾数域所表示的值是1.M” role=”presentation”>1.M1.M。由于规格化的浮点数的尾数域最左位(最高有效位)总是1,故这一位经常不予存储,而认为隐藏在小数点的左边。于是23位字段可以存储有效数。
例1:(754标准转化10进制)
若浮点数x的754标准存储格式为(41360000)16” role=”presentation”>(41360000)16(41360000)16 ,求其浮点数的十进制数值。
将16进制转化成二进制:
S” role=”presentation”>SS 符号位 | E” role=”presentation”>EE 阶码 | M” role=”presentation”>MM 尾数 |
---|---|---|
0 | 100 0001 0 | 011 0110 0000 0000 0000 0000 |
31(1) | 30———23(8) | 22———0(23) |
指数 e = 阶码 - 127=10000010 - 00000011 =(3)10” role=”presentation”>(3)10(3)10
包括隐藏位1的尾数1.M” role=”presentation”>1.M1.M = 1.011 0110 0000 0000 0000 0000 = 1.011011
x=(−1)S×(1.M)×2 e=+(1.011011)×23” role=”presentation”>x=(−1)S×(1.M)×2 e=+(1.011011)×23x=(−1)S×(1.M)×2 e=+(1.011011)×23
例2:(10进制转化754标准)
将数(20.59375)10” role=”presentation”>(20.59375)10(20.59375)10 转换成754标准的32位浮点数的二进制存储格式。
1.转化成二进制:20.59375=10100.10011
2.规格化表示:10100.10011=1.010010011×24” role=”presentation”>×24×24
3.得符号位S=0,阶码E=4+127=131=10000011,M=010010011
解得:
S” role=”presentation”>SS 符号位 | E” role=”presentation”>EE 阶码 | M” role=”presentation”>MM 尾数 |
---|---|---|
0 | 100 0001 1 | 010 0100 1100 0000 0000 0000 |
31(1) | 30———23(8) | 22———0(23) |
3.十进制数串的表示方法:
1). 字符串形式:即一个字节存放一个十进制的数位或符号位。主要用于非数值计算的应用领域中。
2). 压缩的十进制数串形式:即一个字节存放两个十进制的数位。节约空间,便于直接完成十进制数的算术运算,是广泛采用的较为理想的方法。每个数位占用半个字节(即4个二进制为)
2.1.2 数的机器码表示
把符号位和数值位一起来编码来表示相应数的各种表示方法,如原码,补码,反码,移码。
一般书写表示的数称为真值,机器中这些编码表示的数,称为机器码或者机器数。
1. 原码表示法
若定点整数的原码形式为Xn.Xn−1 ... X1 X0” role=”presentation”>Xn.Xn−1 ... X1 X0Xn.Xn−1 ... X1 X0,则原码的定义为:
[x]原={