1.计算机中数据的表示
在计算机中只能用数字化信息来表示数的正、负,人们规定用“0”表示正号,用“1”表示负号。例如,在机器中用8位二进制表示一个数+90,其格式为:
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
↑
符号位,0表示正
而用8位二进制表示一个数-89,其格式为:
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
↑
符号位,1表示负
在计算机内部,数字和符号都用二进制码表示,两者合在一起构成数的机内表示形式,称为机器数,而它真正表示的数值称为这个机器数的真值。
2.定点数和浮点数
(1) 机器数表示的数的范围受设备限制
在计算机中,一般用若干个二进制位表示一个数或一条指令,把它们作为一个整体来处理、存储和传送。这种作为一个整体来处理的二进制位串,称为计算机字。表示数据的字称为数据字,表示指令的字称为指令字。
计算机是以字为单位进行处理、存储和传送的,所以运算器中的加法器、累加器以及其他一些寄存器,都选择与字长相同位数。字长一定,则计算机数据字所能表示的数的范围也就确定了。
例如使用8位字长计算机,它可表示无符号整数的最大值是(255)10=(11111111)2。运算时,若数值超出机器数所能表示的范围,就会停止运算和处理,这种现象称为溢出。
(2) 定点数与浮点数
计算机中运算的数,有整数,也有小数,如何确定小数点的位置呢?通常有两种约定:一种是规定小数点的位置固定不变,这时机器数称为定点数。另一种是小数点的位置可以浮动的,这时的机器数称为浮点数。微型机多选用定点数。
数的定点表示是指数据字中的小数点的位置是固定不变的。小数点位置可以固定在符号位之后,这时,数据字就表示一个纯小数。假定机器字长为16位,符号位占1位,数值部分占15位,故下面机器数其等效的十进制数为:-2-15 。
1 |
000000000000001 |
↑ · ↑
符号位 ↑小数点 数值部分
如果把小数点位置固定在数据字的最后,这时,数据字就表示一个纯整数。假设机器字长为16位,符号占一位,数值部分占15位,故下面机器数其等效的十进制数为+32767。
0 |
111111111111111 |
↑ ↑ ·
符号位 数值部分 ↑小数点
定点表示法所能表示的数值范围很有限,为了扩大定点数的表示范围,可以通过编程技术,采用多个字节来表示一个定点数,例如,采用4个字节或8个字节等。
(3) 浮点数
浮点表示法就是小数点在数中的位置是浮动的。在以数值计算为主要任务的计算机中,由于定点表示法所能表示的数的范围太窄,不能满足计算问题的需要,因此就要采用浮点表示法。在同样字长的情况下,浮点表示法能表示的数的范围扩大了。
计算机中的浮点表示法包括两个部分:一部分是阶码(表示指数,记作E);另一部分是尾数(表示有效数字,记作M)。设任意一数N可以表示为:N=2EM
其中2为基数,E为阶码,M为尾数。浮点数在机器中的表示方法如下:
阶符 |
E |
数符 |
M |
阶码部分 · 尾数部分
由尾数部分隐含的小数点位置可知,尾数总是小于1的数字,它给出该浮点数的有效数字。尾数部分的符号位确定该浮点数的正负。阶码给出的总是整数,它确定小数点浮动的位数,若阶符为正,则向右移动;若阶符为负,则向左移动。
假设机器字长为32位,阶码8位,尾数24位:
阶符 |
E |
数符 |
M |
↑ ↑ ·
1位 7位 1位 23位
其中左边1位表示阶码的符号,符号位后的7位表示阶码的大小。后24位中,有一位表示尾数的符号,其余23位表示尾数的大小。浮点数表示法对尾数有如下规定:
1/2≤M<1 即要求尾数中第1位数不为零,这样的浮点数称为规格化数。
当浮点数的尾数为零或者阶码为最小值时,机器通常规定,把该数看作零,称为”机器零”在浮点数表示和运算中,当一个数的阶码大于机器所能表示的最大码时,产生“上溢”。上溢时机器一般不再继续运算而转入“溢出”处理。当一个数的阶码小于机器所能代表的最小阶码时产生“下溢”,下溢时一般当作机器零来处理。