一、进位记数制
1、一般的进制记数制就是以
为基数的记数制,采用的数码应该是
,各数位的位权应是
的整次幂,运算规则应是“逢
进一”,其位权展开式为
其中,
和
都是正整数。
2、在同时使用不同数制的场合,为避免混淆常使用数字下标或字母后缀对不同数制加以标识,
数制 | 下标标识 | 后缀标识 |
二进制(Binary) | ||
八进制(Octal) | ||
十进制(Decimal) | ||
十六进制(Hexadecimal) |
3、进制转换:
(1)任意进制转为十进制
一般采用按权相加法,就是按照十进制数的运算规则计算其位权展开式,就可以得到相应的十进制数。
(2)十进制转为其他进制
把十进制数转为其他进制,需要对整数部分和小数部分分别进行不同的处理。
十进制数的整数的转换可以采用除基取余法,小数部分采用乘基取整法。一般来说,连续乘2,8,16难以使十进制小数达到0,这时可以按“精度相当”原则确定转换位数。例如一位十进制数表示数的精度为0.1,转为二进制小数要得到相应精度可取三位或四位(精度为1/8或1/16)。
(3)二进制和八进制、十六进制的相互转换
把八进制转为二进制,只需要将每位八进制数写成相应的三位二进制数即可;要把十六进制转为二进制,就把每位十六进制数写成相应的四位二进制即可。
把二进制转为八进制或十六进制,需要以小数点为基准进行分组,转为八进制时每三位一组,转为十六进制时每四位一组,位数不足时需要用0补位(补位应不改变原二进制数的数值,即整数在高位补0,小数在低位补0);按原顺序写出每组二进制数所对应的八进制或十六进制即可。
(4)八进制和十六进制的相互转换
八进制和十六进制的转换通过二进制来实现。
二、带符号的二进制数的表示
1、纯整数称为定点整数;纯小数称为定点小数;既有整数,也有小数,称为浮点数。
2、带符号的数是用正负号加绝对值表示的数,真值是指带正负号的二进制数,是带符号的二进制数的书写形式。在数字系统中,由于位数是固定的,也就是说,无效0也要表示。数的正负号通常是用位于数码最高位(最左端)的一个二进制位表示,这个二进制位称为符号位,一般0表示正,1表示负。这种用一个二进制位表示数的正负号的方法称为符号数码化。机器数是符号数码化的定长二进制数,是带正负号的二进制数在机器中的表示形式。由于机器数的位数是固定的,当实际数的有效数位不足时需要用0补位,常用的机器数有原码、补码、反码。
3、原码又叫符号-数值(sign-magnitude)表示法,是用一个二进制位(称为符号位)表示数的正负号,其余各位(称为数值部分)表示数的绝对值。
位定点整数原码的定义式为(符号位的位权为
)
式中表示真值
的原码。
当为正数时,正数的原码的符号位为0,数值部分等于真值(若真值的有效数位不足时需用0补位);当
为负数时,负数的原码的符号位为1,数值部分等于真值的绝对值。
位定点整数原码的表示数值范围为
。原码和真值的转换可以按照原码的符号位对应真值的正负号,原码的数值部分等于真值的绝对值来完成。0的原码有两种形式,也就是+0和-0。
位定点小数原码的定义式为(符号位的位权为
)
机器表示定点小数时的小数点是隐含的,并不表示出来。但我们在书写时,为明确起见常把小数点写出。
原码具有符号和数值分离的特点,形式直观,但运算不便,所以数字系统较少采用原码。
4、用来记数的设备所能表示的数总有一个限度,或者说有一定的容量,这个容量我们称之为模。我们称数与模的和为该数对模的补数。这样,减法操作加负数对模的补数来实现。
位二进制整数共有
种状态,可表示
个数(
),而0和
的
位二进制表示是相同的。即
位二进制整数是以
为模。
二进制数与模的和为二进制数的“补码”。即
根据模的特点,位定点整数补码的定义式也可以写成
式中表示真值
的补码。0的补码形式唯一。
为使补码能够正确地表示数值并区分政府,将补码的最高位作为符号位,0为正,1为负。这样位定点整数补码所能表示的范围为
。其中
是
位定点整数补码所能表示的绝对值最大的负数,常作为特殊数,简便的转换方法对其不适用。
把补码本身作为二进制数,其数值叫做补码的码值。若两数同号,真值大的数其补码的码值也大;若两数异号,真值大的数其补码的码值小。
按位取反,末位加一(简称为取反加一)的操作称为求补操作。经观察,求补操作也可以按“保持低位的0以及首1(由低位到高位出现的第一个1)不变,首1之后的各位按位取反”的方法完成。但这种方法对特殊数不适用,这个特殊数由补码定义直接得出。
定点小数的小数点在符号位之后,位定点小数补码的定义式为
5、由真值求补码的方法概括为:先将真值的数值部分补位定长,对于正数,其补码的符号位为0,数值部分等于真值的数值部分(数值不变);对于负数,其补码的符号位为1,数值部分由真值的数值求补得到(数值求补)。
由补码求真值的方法:若补码的符号位为0,则真值为正,真值的数值部分等于补码的数值部分;若补码的符号位为1,则真值为负,真值的数值部分由补码的数值部分求补得到。
由x的补码求-x的补码:对x的补码(包括符号位)求补就得到-x的补码。但需要注意,由于补码所能表示的数值范围中的特殊数的相反数超出补码所能表示的数值范围,不能对其求补码。
6、反码:也是按模定义的,位定点整数的反码是以
为模。
位定点整数的反码的定义式为
位定点整数的反码所能表示的数值范围为
。0的反码有两种形式。
真值求反码的方法:将真值的数值部分补位定长,对于正数,其反码的符号位为0,数值部分等于真值的数值部分;对于负数,其反码的符号位为1,数值部分由真值的数值部分按位取反得到。
7、在位定点整数运算中最高位产生的进位其位权为
。n位定点整数补码是以
为模,按照模的特点,
,这个进位直接舍弃,不必处理。而
位定点整数反码是以
为模,按照模的特点,
。说明在反码运算中,若最高位产生进位则应该在最低位加1.这种方式称为循环进位。循环进位使运算不便,故数字系统很少使用反码。
8、真值与机器数之间的转换概括
(1)真值与机器数的相互转换
(2)机器数之间的转换(符号位不变)
9、移码
在浮点数运算中常常需要比较两数阶码大小,若阶码用补码表示,则不便于比较大小。所以定义移码(也称增码,余码)如下
位定点整数移码所能表示的数值范围为
由定义式可以看出移码相当于真值平移。移码的码值大小与真值大小对应关系就是码值大,真值就大。
由补码定义式和移码定义式,得
上式说明移码和补码仅仅符号位不同,即移码的符号位0为负,1为正。
三、定点数和浮点数
1、数字系统所要处理的二进制数可以写做,
通常是纯小数称为尾数,
是整数称为阶码。
2、定点数:若各数的阶码相同且不变,则可以只表示各自的尾数,即为定点数。
定点整数是指数值表示为纯整数,其数码的最高位作为符号位,小数点固定在最低位之后。
定点小数是指数值表示为纯小数,其数码的最高位作为符号位,小数点固定在符号位之后。
若系统采用定点表示,则各数在输入系统时,要用同一个称为比例因子的系数进行处理,使之满足定点数的要求。
溢出:数字系统中用来表示数字的设备和设备的位数有限,所能表示的数值有一定的范围。若在运算过程中数值超出设备所能表示的范围,称为溢出。对于定点数,若出现溢出一般需要改变比例因子,重新处理。
3、浮点数:若各数的阶码不同或可变,则需要同时表示出各数的阶码和尾数,即为浮点数。数字系统中实际使用的浮点数是由两个定点数组成的,前一部分为阶码,后一部分为尾数
。一般阶码采用定点整数,是以2为底的幂指数,尾数采用定点小数。
为充分利用机器的有效数位提高精度,通常使尾数的绝对值不小于0.5,即,这称之为尾数规格化。
尾数(k位定点小数原码)的数值范围为
阶码(m位定点整数原码)的数值范围为
所以浮点数N的数值范围为
浮点数的运算较为复杂,加减时需要先对阶,再对尾数进行加减;乘除时,需要对尾数乘除,对阶码加减;最终还要对运算结果进行规格化处理。在位数相同下,定点数表示的数据精度最高,数据范围小,运算速度快;浮点数表示的数据精度低,数值范围大,运算速度慢。微型计算机、工业控制系统多采用定点表示,大、中型计算机多采用浮点表示,或兼有定点、浮点两种功能。
四、编码
1、在数字系统中,非数值信息通常用二进制代码表示,就是01序列,也称为码字。编码指用二进制代码表示约定信息。
2、二-十进制数是用二进制表示的十进制数,常称为BCD码,一般需要四位二进制位用来表示。其中有约定含义的代码称为有效码,没有约定含义的称为无效码或冗余码。
3、若一种BCD码的各位有自己的位权,那么该BCD码称为有权码,例如8421码等。若BCD码不存在这样的位权关系,则称为无权码。有权码有规律,但满足给定位权的编码并不唯一。
4、余3码是一种无权码,将十进制数写成8421BCD码后加上0011就得到了余3码。
5、十进制数码与9的差称为该数对9的补。若十进制数的BCD码按位取反,即得到了该数对9的补的BCD码,则称此BCD码为9的自补代码。
6、十进制数与BCD码的相互转换就是将每位十进制数码写成相应的BCD码,或将每个BCD码写成相应的十进制数码。
7、若表示相邻数字信息的代码只有一位不同,则这样的代码称为单位间距码。十进制数的单位间距码称为单位间距BCD码,由单位间距BCD码构成的多位十进制数代码不能完全实现单位间距,所以使用较少。二进制数的单位间距码称为格雷码。单位间距码是一种可靠性编码,在状态转换时只有一位信号变化,不容易出错。
8、二进制码与格雷码的转换;
设n为二进制数为,n位格雷码为
二进制转换为格雷码:
格雷码转换为二进制代码:
9、计算机系统中一个码占用一个字节(8个二进制位),其中首位为0,用7位表示128个字符信息。
10、汉字字符一般使用两个字节编码,两个字节的首位均为1,这样的编码一般称之为汉字的内码或机内码。汉字在计算机系统中的存储、传送及处理都是以内码形式进行的。显示或打印时,通过查找字形库把内码转换为相应的字形显示或打印出来。汉字输入时一般使用便于记忆的输入编码,把输入的汉字由输入编码转换为内码是由输入管理系统完成的。
五、校验码
1、信息在传送和存储过程中,由于外界干扰或电路故障,可能会产生错误,我们想要有判断是否出错的能力。我们把代码中用于表示约定信息的二进制位称为有效信息,把用于检错的二进制位称为校验信息或校验位,有效信息和校验信息按一定规律编制的代码称为校验码。校验码是通过增加信息量来提高信息的可靠性,也叫做冗余校验。若干个二进制位组成一个“码字”,两个“码字”之间不同位的个数称之为两个码字之间的“距离”,各码字间的最小距离称为“码距”。码距越大,编码的纠错能力越强,冗余信息也越多。
2、奇偶校验:对有效信息设置一个校验位来构成校验码,其校验位的取值是使整个校验码中“1”的个数为奇数或偶数。使校验码中“1”的个数为奇数的称为奇校验,使校验码中“1”的个数为偶数的称为偶校验。奇偶校验可以发现奇数位错,不能发现偶数位错,不能纠错。
3、水平垂直校验:一种拥有纠错能力的多重奇偶校验。对每个有效信息代码配一个校验位,构成一个校验码;将若干个校验码作为一组,配一个校验字,构成一个校验组。各校验位以及校验字的各位分别按行按列,按奇偶校验规则取值。可以发现两位错,纠正一位错。
(1)一位错,水平校验找出行,垂直校验找出列;
(2)两位错,同一行时,水平校验找不出,垂直校验找出两列,无法纠错;
不在同一行列时,水平垂直校验给出4个位置,两种情况,无法纠错。
4、海明校验:一种拥有纠错能力的多重奇偶校验。海明校验是将一个信息代码按一定规律分成若干组,每组配一个奇偶校验位,将有效信息和校验位统一编码构成海明校验码。对于个有效信息,应设置
个校验位,使之满足
且
最小。
在海明校验码中位序是2的整次幂的位置放置校验位,其他位置放置有效信息,分组按奇偶校验规则确定各校验位的取值。其分组方法为按照二进制位序码的每一位对应一个分组,每位信息出现在其位序码为1的位所对应的分组中。
校验方法:先分组,分别检验各组中“1”的个数是否满足要求的校验规则,可以得到检错信息,最终组成一个错误字,该错误字的十进制就是错误位序。海明校验可以发现并纠正一位错,不能识别多位错。