Skip to content

19.8.1 内符号表示

计算机是用符号工作的机器. 解释和处理这些符号由软件确定和控制. 外符号、 字母、密码和特殊符号由内部的二进制代码按照存储单元序列的形式代表. 一个取值 0 和 1 的存储单元 (二进制数字) 是最小的可代表信息的单元. 八个存储单元构成下一个单位,即字节. 一个字节,可区分 28 种存储单元组合,故可确定 256 个符号. 这样的指定称为代码. 有不同的代码, 最普及的是 ASCII (美国信息交换标准码).

19.8.1.1 数制

1. 表示律

数在计算机里表示为一列连续字节. 内表示的基础是二进制, 这是类似于十进制的多元数制.

多元数制的表示律为

(19.259)a=i=mnziBi(m>0,n0;m,n 为整数 ),

其中 B 为基数, zi(0zi<B) 为该数制的数码. i0 的位置构成整数,而 i<0 的位置则为该数的小数部分.

数 139.8125 的十进制数表示,即 B=10 ,有形式

139.8125=1102+3101+9100+8101+1102+2103+5104.

在表 19.3 中可见计算机里最常出现的数制.

数制

基数

数码

二进制

2

0,1

八进制

8

0,1,2,3,4,5,6,7

十六进制

16

0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F (字母 A~F 赋值 10~15)

十进制

10

0,1,2,3,4,5,6,7,8,9

2. 转换

从一个数制到另一个数制的转变称为转换. 若同时使用不同的数制, 为了避免混乱用不同的下标表示基数.

十进制数 139.8125 的不同表示: 139.812510=10001011.11012=213.648=8B.D16.

(1)二进制数转换为八进制或十六进制数转换为八进制或转换为八进制或十六进制数是非常简单的. 从二进制小数点出发向左和向右三位或四位构成一组, 确定其值. 这些值就是八进制或十六进制的数字.

(2)十进制数转换为二进制、八进制或十六进制数转换为别的数制, 对整数部分和分数部分分别应用如下规则:

a) 整数部分G 为十进制整数,则对基数为 B 的数制,构造律 (19.259) 为

(19.260)G=i=0nziBi(n0).

G 除以 B ,则得到整数部分和余数:

(19.261)GB=i=1nziBi1+z0B.

这里 z0 的值可为 0,1,,B1 ,即要求的数的最低位数字. 若重复此法求商,便可得进一步的数字.

b) 分数部分g 是真分数,则将其转换为以 B 为基数的数的方法为

(19.262)gB=z1+i=2mziBi+1,

即下一位数字可由乘积 gB 的整数部分得到. 用同样的方式可得数值 z2,z3, .

A: 将十进制数 139 转化为二进制数

B: 将小数 0.8125 转化为二进制数 139:2=69 余数 1(1=z0)

0.81252=1.625(1=z1)

69:2=34 余数 1(1=z1)

0.6252=1.25(1=z2)

34:2=17 余数 0(0=z2)

0.252=0.5(0=z3)

17:2=8 余数 1 :

0.52=1.0(1=z4)

8:2=4 余数 0 : 0.02=0.0

4:2=2 余数 0 : 0.812510=0.11012 2:2=1 余数 0 :

1:2=0 余数 1(1=z7)

13910=100010112

(3)二进制、八进制或十六进制数转换为十进制数 二进制、八进制或十六进制数转换为十进制数的算法如下:

(19.263)ai=mnziBi(m>0,n0;m,n 为整数 ),

其中十进制小数点在 z0 的后边.

转换计算用霍纳法则 (参见第 1237 页 19.1.2.1).

111012=124+123+122+021+1=29.

01937d01-b6f6-7881-8294-3a9c82211946_68_1032_2009_332_196_0.jpg

相应的霍纳格式见右边.

19.8.1.2 内部数字表示 INR

二进制数在计算机里用一个或多个字节表示. 区别两种表示形式, 即定点数和浮点数. 第一种情况, 小数点在一个固定的位置; 第二种情况, 它随着指数的改变而浮动.

1. 定点数

带给定参数的定点数的范围为

(19.264)0|a|2t1

定点数可用图 19.15 的形式表示.

01937d01-b6f6-7881-8294-3a9c82211946_69_442_774_757_262_0.jpg

2. 浮点数

基本上用两种不同的形式表示浮点数, 其内部完成可以详细改变.

(1)正规化半对数形式 在第一种形式中,数 a 的指数 E 和尾数 M 的符号是分别存储的

(19.265a)a=±MB±E,

这里选取指数 E 使得尾数

(19.265b)1/BM<1

成立. 这称为正规化半对数形式 (图 19.16).

01937d01-b6f6-7881-8294-3a9c82211946_69_454_1629_739_290_0.jpg

带给定参数的浮点数的绝对值范围是

(19.266)22p|a|(12t)2(2p1).

(2) IEEE 标准 浮点数的第二个 (目前使用的) 形式相应于 1985 年通过的 IEEE 标准. 它处理计算机算术、舍入行为、算术运算、数的转换、比较运算和处理如上溢和下溢的特殊情况等要求.

浮点数表示见图 19.17.

01937d01-b6f6-7881-8294-3a9c82211946_70_409_407_824_281_0.jpg

特征 C 来自指数 E 加上适当的常数 K . 这样的选取使得特征只是正数,可表示的数为

(19.267)a=(1)v2E1b1b2bt1,其中E=CK.

因为保存 C=0,C=255 ,这里 Cmin=1,Cmax=256 .

该标准给出两个基本的表示形式 (单精度和双精度浮点数), 但也有其他的表示形式. 表 19.4 包含了基本形式的参数.

参数

单精度

双精度

存储单元字长

32

64

最大指数 Emax

+127

+1023

最小指数 Emin

-126

-1022

常数 K

+127

+1023

指数位数

8

11

尾数位数

24

53

version 1.24.0