机器数的另一个特点是二进制的位数受机器设备的限制。机器内部设备一次能表示的二进制位数叫机器的字长,一台机器的字长是固定的。字长8位叫一个字节(Byte),现在机器字长一般都是字节的整数倍,如字长8位、16位、32位、64位。) k- ], c; V' y6 u2 k, R, v0 w
符号位数值化之后,为能方便的对机器数进行算术运算、提高运算速度,计算机设计了多种符号位与数值一起编码的方法,最常用的机器数表示方法有三种:原码、反码和补码。9 J. Y2 O! V; Y
(2)原码表示法和反码表示法, M: z( P _6 I! W$ E
一个机器数X由符号位和有数数值两部分组成。; C) P9 X9 K$ |3 ?
(3)补码表示法(complement)7 m* l8 G3 ?: n# f
设计补码表示法的目的是:①使符号位能和有效数值部分一起参加数值运算从而简化运算规则,节省运算时间。②使减法运算转化成加法运算,从而进一步简化计算机中运算器的线路设计。计算机是一种有限字长的数字系统,因此都是有模运算,超过模的运算结果都将溢出。n位二进制整数的模是2 n 。
, v' v' c9 Y" t4 K另一种约定所有机器数的小数点位置隐含有符号位之后、有效数值部分最高位之前,叫定点纯小数机器数,简称定点小数。
4 G7 o( G! ^: D5 w) n计算机采用定点数表示时,对于既有整数又有小数的原始数据,需要设定一个比例因子,数据按比例因子缩小成定点小数或扩大成定点整数再参加运算,结果输出时再按比例折算成实际值。n位原码定点整数的表示范围是-(2 n-1 -1)≤X≤2 n-1 -1,n位原码定点小数的表示范围是-(1-2 -(n-1) )≤X≤1-2 -(n-1) 。当机器数小于定点数的最小值时,被当作0处理,超出定点数的最大值时,机器无法表达,称作“溢出”,此时机器将停止运算,屏幕显示溢出警告。* d& V- H# \/ Y6 `
定点数表示方法简单直观,不过定点数表示数的范围小,不易选择合适的比例因子,运算过程容易产生溢出。% i7 v5 `: G8 `) h2 v, i
(2)浮点数(floating-point number)
6 d0 ~4 U; Y$ O计算机采用浮点数来表示数值,它与科学计算法相似,把任意一个二进制数通过移动小数点位置表示成阶码和尾数两部分:N=2 E ×S
# f. J/ L4 N7 W* T其中:E———N的阶码(exponent),是有符号的整数;
3 P& k/ C6 v, ?. S* LS ———N的尾数(mantissa),是数值的有效数字部分,一般规定取二进制定点纯小数正式。浮点数运算必须化成规格化形式。所谓规格化,对于原码尾数应使最高数字位S1 =1,如果不是1,且尾数不是全为0时就要移动尾数直到S1 =1,阶码相应变化,保证N值不变。如果尾数是补码,当N是正数时,S1 必须是1,而N是负数时,S1 必须是0,才称为规格化的形式。
% b- t" Q: o, U8 V) L+ C4.数字编码
$ c" w$ [' y5 @十进制数在机内转换成二进制数时,有时也以一种中间数字编码形式存在,它把每一位十进制数用四位二进制编码表达,每一组只表达0~9的数值运算时,有专门的线路在每四位二进制间按“十”进位处理,故称为二进制编码的十进制数———BCD码(Binary Coded Decimal(或称二—十进制数。其编码种类很多,如格雷码、余3码等,最常用的叫8421BCD码,4个二进制位自左向右每位的权分别是8、4、2、 1。0~9的8421码与通常的二进制一样进位,十分简单,当计数超过9时,需要采取办法自动向十进制高位进一,即要进行“十进制调整”才能得到正确结果。
$ d/ O9 O7 A: R) F; _* \5.校验码+ p7 z1 n7 a1 ^# x. P/ P3 Z
由于器件质量不可靠、线路工艺不过关、远距离传送带来的干扰或受来自电源、空间磁场影响等因素,使得信息在存取、传送和计算过程中难免会发生诸如“1”误变为“0”的错误,计算机一旦出错,要能及时检测并纠正错误,其中一种方法是对数据信息扩充,加入新的代码,它与原数据信息一起按某种规律编码后具有发现错误的能力,有的甚至能指出错误所在的准确位置使机器自动纠正,能起这种作用的编码叫 “校验码”(check code)。
2 S% S& B9 [- A/ T# ?) ?奇偶校验码:4 _9 K' @# V* G& @" \8 f
将每个数据代码扩展一个二进位作校验位(parity bit),这个校验取0还是取1的原则是:若是奇校验(odd parity),编码是含“1”的个数连同校验位的取值共有奇数个“1”;若是偶校验(even parity),连同校验位在内编码里含“1”的个数是偶数个。
, _- J! s' `2 n交叉校验:8 x: R( f( C1 m4 T
计算机进行大量字节传送时一次传送几百甚至更多字节组成的数据块,如果不仅每一个字节有一个奇偶校验位———称横向校验,而且全部字节的同一位也设置了一个奇偶校验位———称纵向校验,对数据块代码的横向纵向同时校验,这种情况叫交叉校验。 |