因为有符号占据一位,数的形式值就不等于真正的数值,带符号位的 机器数对应的数值称为机器数的真值 机器数的另一个特点是二进制的位数受机器设备的限制。机器内部设 备一次能表示的二进制位数叫机器的字长,一台机器的字长是固定 的。字长8位叫一个字节(Byte),现在机器字长一般都是字节的整数 倍,如字长8位、16位、32位、64位 符号位数值化之后,为能方便的对机器数进行算术运算,提高运算速 度,计算机设计了多种符号位与数值一起编码的方法,最常用的机器 数表示方法有三种:原码、反码和补码。 (2)原码表示法和反码表示法 个机器数X由符号位和有数数值两部分组成。设符号位为X0,X 真值的绝对值|Ⅹ|=X1X2…Xn,X的机器数原码表示为: [X]原=X0X1X2…Xn 当X≥0时,X0=0 当X<0时,X0=1 原码表示很直观,但原码加减运算时符号位不能视同数值一样参加运 算,运算规则复杂,运算时间长,计算机大量的数据处理工作是加减 运算,原码表示就很不方便了 一个负数的原码符号位不动,其余各位取相反码就是机器数的另 种表示形式-反码表示法。正数的反码与原码相同。 设[X]原=X0X1X2…Xn 当Ⅹ0=0时,[X]反=X0X1X2…Xn
因为有符号占据一位,数的形式值就不等于真正的数值,带符号位的 机器数对应的数值称为机器数的真值。 机器数的另一个特点是二进制的位数受机器设备的限制。机器内部设 备一次能表示的二进制位数叫机器的字长,一台机器的字长是固定 的。字长 8 位叫一个字节(Byte),现在机器字长一般都是字节的整数 倍,如字长 8 位、16 位、32 位、64 位。 符号位数值化之后,为能方便的对机器数进行算术运算,提高运算速 度,计算机设计了多种符号位与数值一起编码的方法,最常用的机器 数表示方法有三种:原码、反码和补码。 (2)原码表示法和反码表示法 一个机器数 X 由符号位和有数数值两部分组成。设符号位为 X0,X 真值的绝对值|X|=X1X2…Xn,X 的机器数原码表示为: [X]原=X0X1X2…Xn 当 X≥0 时,X0=0 当 X<0 时,X0=1 原码表示很直观,但原码加减运算时符号位不能视同数值一样参加运 算,运算规则复杂,运算时间长,计算机大量的数据处理工作是加减 运算,原码表示就很不方便了。 一个负数的原码符号位不动,其余各位取相反码就是机器数的另 一种表示形式--反码表示法。正数的反码与原码相同。 设[X]原=X0X1X2…Xn 当 X0=0 时,[X]反=X0X1X2…Xn
(3)补码表示法( complement) 设计补码表示法的目的是:①使符号位能和有效数值部分一起参加数 值运算从而简化运算规则,节省运算时间。②使减法运算转化成加法 运算,从而进一步简化计算机中运算器的线路设计。 计算机是一种有限字长的数字系统,因此都是有模运算,超过模的运 算结果都将溢出。n位二进制整数的模是2n。 对于二进制数还有一种更加简单的方法由原码求得补码 ①正数的补码表示与原码一样,[X]补=[X]原 ②负数的补码是将原码符号位保持"1"之后其余各位取相反的码,末 位加1便得到补码,即取其原码的反码再加1:[X]补=[X]反+1。 真值+0和-0的补码表示是一致的,但在原码和反码表示中具有不同 的形式。8位补码机器数可以表示-128,但不存在+128的补码与之对 应,由此可知8位二进制补码能表示数的范围是-128~+127。应该注 意:不存在-128的8位原码和反码形式。 根据互补的概念,一个补码机器数再求一次补就得到机器数的原码 定点数与浮点数 (1)定点数(fxed-poi 计算机处理的数据不仅有符号,而且大量的数带有小数,小数点不占 有二进制位,而是隐含有机器数里某固定位置上。通常采用两种简单 的约定:一种是约定所有机器数的小数点位置隐含在机器数的最低位 之后,叫定点纯整数机器数,简称定点整数
(3)补码表示法(complement) 设计补码表示法的目的是:①使符号位能和有效数值部分一起参加数 值运算从而简化运算规则,节省运算时间。②使减法运算转化成加法 运算,从而进一步简化计算机中运算器的线路设计。 计算机是一种有限字长的数字系统,因此都是有模运算,超过模的运 算结果都将溢出。n 位二进制整数的模是 2n。 对于二进制数还有一种更加简单的方法由原码求得补码。 ①正数的补码表示与原码一样,[X]补=[X]原 ②负数的补码是将原码符号位保持"1"之后其余各位取相反的码,末 位加 1 便得到补码,即取其原码的反码再加 1∶[X]补=[X]反+1。 真值+0 和-0 的补码表示是一致的,但在原码和反码表示中具有不同 的形式。8 位补码机器数可以表示-128,但不存在+128 的补码与之对 应,由此可知 8 位二进制补码能表示数的范围是-128~+127。应该注 意:不存在-128 的 8 位原码和反码形式。 根据互补的概念,一个补码机器数再求一次补就得到机器数的原码 了。 定点数与浮点数: (1) 定点数(fixed-point number) 计算机处理的数据不仅有符号,而且大量的数带有小数,小数点不占 有二进制位,而是隐含有机器数里某固定位置上。通常采用两种简单 的约定:一种是约定所有机器数的小数点位置隐含在机器数的最低位 之后,叫定点纯整数机器数,简称定点整数
另一种约定所有机器数的小数点位置隐含有符号位之后,有效数值部 分最高位之前,叫定点纯小数机器数,简称定点小数。 计算机采用定点数表示时,对于既有整数又有小数的原始数据,需要 设定一个比例因子,数据按比例因子缩小成定点小数或扩大成定点整 数再参加运算,结果输出时再按比例折算成实际值。n位原码定点整 数的表示范围是(2n-1-1)≤X≤2n-1-1n位原码定点小数的表示范围 是(1-2-n-1)≤X≤1-2-(m-1)。当机器数小于定点数的最小值时,被当 作0处理,超出定点数的最大值时,机器无法表达,称作"溢出",此 时机器将停止运算,屏幕显示溢出警告 定点数表示方法简单直观,不过定点数表示数的范围小,不易选择合 适的比例因子,运算过程容易产生溢出。 (2)浮点数( floating-point number 计算机采用浮点数来表示数值,它与科学计算法相似,把任意一个二 进制数通过移动小数点位置表示成阶码和尾数两部分 N=2E×S 其中:E-N的阶码( exponent),是有符号的整数 S-N的尾数( mantissa),是数值的有效数字部分,一般规定取二进 制定点纯小数正式。 浮点数运算必须化成规格化形式。所谓规格化,对于原码尾数应使最 高数字位S1=1,如果不是1,且尾数不是全为0时就要移动尾数直到 S1=1,阶码相应变化,保证N值不变。如果尾数是补码,当N是正 数时,S1必须是1,而N是负数时,S1必须是0,才称为规格化的
另一种约定所有机器数的小数点位置隐含有符号位之后,有效数值部 分最高位之前,叫定点纯小数机器数,简称定点小数。 计算机采用定点数表示时,对于既有整数又有小数的原始数据,需要 设定一个比例因子,数据按比例因子缩小成定点小数或扩大成定点整 数再参加运算,结果输出时再按比例折算成实际值。n 位原码定点整 数的表示范围是-(2n-1-1)≤X≤2n-1-1,n 位原码定点小数的表示范围 是-(1-2-(n-1)≤X≤1-2-(n-1)。当机器数小于定点数的最小值时,被当 作 0 处理,超出定点数的最大值时,机器无法表达,称作"溢出",此 时机器将停止运算,屏幕显示溢出警告。 定点数表示方法简单直观,不过定点数表示数的范围小,不易选择合 适的比例因子,运算过程容易产生溢出。 (2)浮点数(floating-point number) 计算机采用浮点数来表示数值,它与科学计算法相似,把任意一个二 进制数通过移动小数点位置表示成阶码和尾数两部分: N=2E×S 其中:E--N 的阶码(exponent),是有符号的整数; S--N 的尾数(mantissa),是数值的有效数字部分,一般规定取二进 制定点纯小数正式。 浮点数运算必须化成规格化形式。所谓规格化,对于原码尾数应使最 高数字位 S1=1,如果不是 1,且尾数不是全为 0 时就要移动尾数直到 S1=1,阶码相应变化,保证 N 值不变。如果尾数是补码,当 N 是正 数时,S1 必须是 1,而 N 是负数时,S1 必须是 0,才称为规格化的
形式。 4.数字编码 十进制数在机内转换成二进制数时,有时也以一种中间数字编码形式 存在,它把每一位十进制数用四位二进制编码表达,每一组只表达0 9的数值运算时,有专门的线路在每四位二进制间按"十"进位处理, 故称为二进制编码的十进制数-BCD码( Binary Coded Decimal((或称 二十进制数。其编码种类很多,如格雷码、余3码等,最常用的叫 8421BCD码,4个二进制位自左向右每位的权分别是8、4、2、1。0~ 9的8421码与通常的二进制一样进位,十分简单,当计数超过9时, 需要采取办法自动向十进制高位进一,即要进行"十进制调整"才能得 到正确结果。 5校验码 由于器件质量不可靠,线路工艺不过关,远距离传送带来的干扰或受 来自电源,空间磁场影响等因素,使得信息在存取、传送和计算过程 中难免会发生诸如""误变为"0"的错误,计算机一旦出错,要能及时 检测并纠正错误,其中一种方法是对数据信息扩充,加入新的代码, 它与原数据信息一起按某种规律编码后具有发现错误的能力,有的甚 至能指出错误所在的准确位置使机器自动纠正,能起这种作用的编码 叫"校验码"( check code)。 奇偶校验码: 将每个数据代码扩展一个二进位作校验位( parity bit),这个校验取0 还是取1的原则是:若是奇校验 (odd parity),编码是含"1"的个数连同
形式。 4.数字编码 十进制数在机内转换成二进制数时,有时也以一种中间数字编码形式 存在,它把每一位十进制数用四位二进制编码表达,每一组只表达0~ 9 的数值运算时,有专门的线路在每四位二进制间按"十"进位处理, 故称为二进制编码的十进制数--BCD 码(Binary Coded Decimal(或称 二-十进制数。其编码种类很多,如格雷码、余 3 码等,最常用的叫 8421 BCD 码,4 个二进制位自左向右每位的权分别是 8、4、2、1。0~ 9 的 8421 码与通常的二进制一样进位,十分简单,当计数超过 9 时, 需要采取办法自动向十进制高位进一,即要进行"十进制调整"才能得 到正确结果。 5.校验码 由于器件质量不可靠,线路工艺不过关,远距离传送带来的干扰或受 来自电源,空间磁场影响等因素,使得信息在存取、传送和计算过程 中难免会发生诸如"1"误变为"0"的错误,计算机一旦出错,要能及时 检测并纠正错误,其中一种方法是对数据信息扩充,加入新的代码, 它与原数据信息一起按某种规律编码后具有发现错误的能力,有的甚 至能指出错误所在的准确位置使机器自动纠正,能起这种作用的编码 叫"校验码"(check code)。 奇偶校验码: 将每个数据代码扩展一个二进位作校验位(parity bit),这个校验取 0 还是取 1 的原则是:若是奇校验(odd parity),编码是含"1"的个数连同
校验位的取值共有奇数个"1";若是偶校验( even parI过y),连同校验位 在内编码里含"1"的个数是偶数个。 交叉校验: 计算机进行大量字节传送时一次传送几百甚至更多字节组成的数据 块,如果不仅每一个字节有一个奇偶校验位-称横向校验,而且全部 字节的同一位也设置了一个奇偶校验位-称纵向校验,对数据块代码 的横向纵向同时校验,这种情况叫交叉校验 循环冗余校验码-CRC码( Cyclic Redundancy Check 计算机信息但向远方终端或传到另一个计算中心时,信息沿一条通信 线路一位位传送,这种通信方式叫串行通信。循环冗余码(简称CRC 码)就是一种检验能力很强,在串行通信中广泛釆用的校验编码。 (1)CRC码 串行传送的信息M(X是一串k位二进制序列,在它被发送的同时, 被一个事先选择的"生成多项式"相除,"生成多项式"长r+1位,相除 后得到r位余数就是校验位,它拼接到原k位有效信息后面即形成 CRC码。CRC码到达接收方时,接收方的设备一方面接收CRC码, 方面用同样的生成多项式相除,如果正好除尽,表示无信息差错, 接收方去掉CRC码后面r位校验,收下k位有效信息;当不能除尽 时,说明有信息的状态位发生了转变,即出错了。一般要求重新传送 次或立即纠错。 (2CRC码计算 传送信息时生成CRC码以及接收时对CRC码校验都要与"生成多项
校验位的取值共有奇数个"1";若是偶校验(even parity),连同校验位 在内编码里含"1"的个数是偶数个。 交叉校验: 计算机进行大量字节传送时一次传送几百甚至更多字节组成的数据 块,如果不仅每一个字节有一个奇偶校验位--称横向校验,而且全部 字节的同一位也设置了一个奇偶校验位--称纵向校验,对数据块代码 的横向纵向同时校验,这种情况叫交叉校验。 循环冗余校验码--CRC 码(Cyclic Redundancy Check): 计算机信息但向远方终端或传到另一个计算中心时,信息沿一条通信 线路一位位传送,这种通信方式叫串行通信。循环冗余码(简称 CRC 码)就是一种检验能力很强,在串行通信中广泛采用的校验编码。 (1)CRC 码 串行传送的信息 M(X)是一串 k 位二进制序列,在它被发送的同时, 被一个事先选择的"生成多项式"相除,"生成多项式"长 r+1 位,相除 后得到 r 位余数就是校验位,它拼接到原 k 位有效信息后面即形成 CRC 码。CRC 码到达接收方时,接收方的设备一方面接收 CRC 码, 一方面用同样的生成多项式相除,如果正好除尽,表示无信息差错, 接收方去掉 CRC 码后面 r 位校验,收下 k 位有效信息;当不能除尽 时,说明有信息的状态位发生了转变,即出错了。一般要求重新传送 一次或立即纠错。 (2)CRC 码计算 传送信息时生成 CRC 码以及接收时对 CRC 码校验都要与"生成多项