第一章数制与编码1.1进位计数制1.2数制转换1.3带符号数的代码表示1.4数的定点表示和浮点表示1.5数码和字符的代码表示信息主要有两类:数值信息非数值信息——数制及其转换非数值信息的表征——编码使用二进制数的原因:1.实现容易2.运算规则简单3.方便使用逻辑代数4.记忆传输可靠计算机中的信息以二进制形式出现,人们熟悉的十进制不能被机器直接接受§1.1进位计数制123.45=1*102+2*101+3*100+4*10-1+5*10-2基数权数符一、十进制数的表示(D):逢十进一、借一当十二、二进制数的表示(B):逢二进一、借一当二1001.101=1*23+0*22+0*21+1*20+1*2-1+0*2-2+1*2-3权数符基数数符(数码):表示数的符号基:数码的个数权:每一位所具有的值mmnnnnrmnnrrararararararaaaaaaaaN............).............(2211001111210110128868381136)(0123161610162161516121)(AF三、八进制数的表示(O):逢八进一、借一当八四、十进制数的表示(H):逢十六进一、借一当十六总结:对于任意的数N,都能表示成以r为基数的r进制数,记作:§1.2数制转换一、二进制、八进制、十六进制转换成十进制方法:按权展开求和10012345259212120212121111011)()(例10012894868381136)()(例1001231679781610162161516121)()(例AF二、十进制转换成二进制、八进制、十六进制方法:整数部分除基取余,从低到高记录小数部分乘基取整,从高到低记录十进制整数余数二进制整数数列215B7B6B5B4B3B2B1B02107122222225311161261103013011111100B1B0B2B3B5B6B4B7第一个余数是二进制的最低位最后一个余数是二进制的最高位(215)10=(11010111)2•0.43•×2•0.860•×2•1.721•×2•1.441•×2•0.880•×2•1.761保留有效数字3位时(0.43)10=(0.011)2保留有效数字4位时(0.43)10=(0.0110)2保留有效数字5位时(0.43)10=(0.01101)20.250.50.12511111100111111006412816421328.十进制转换成八进制的方法•例(165.3)10=()881658205824020.3×82.42×83.23245.23十进制转换成十六进制的方法•例(286.5)10=()16162861617E1611010.7×1611.2B×163.2311E.B3三、八进制、十六进制与二进制数的转换方法:从小数点开始,分别向左、向右每三位二进制数转换一位八进制数每四位二进制数转换一位十六进制数(1101110.10011)2=()8(1101110.10011)2=()16145666E896E.98156.460000000按位权展开求和整数除以16取余小数乘以16取整八进制数十六进制数二进制数十进制数4位化1位1位化4位按位权展开求和3位化1位1位化3位整数除以8取余,小数乘以8取整整数除以2取余小数乘以2取整按位权展开求和数制间的转换关系§1.3带符号数的代码表示一、原码(符号—数值表示):最高位为符号位,其余各位为数值本身的绝对值一个数在机器内的表达形式称为“机器数”。而它代表的数值称为此机器数的“真值”。[N]原=N0≦N2n-12n-1-N-2n-1N≦0[N]原=N0≦N11-N-1N≦0[+0]原=0.00000[-0]原=1.00000二、反码:正数的反码与原码相同,负数的反码的符号位与原码相同(仍用1表示),其余各位取反(0变1,1变0)。例如:X=+1100110[X]原=0110110[X]反=01100110X=-1100110[X]原=1110110[X]反=1001001[N]反=N0≦N2n-1(2n-1)+N-2n-1N≦0[N]反=N0≦N1(2-2-m)+N-1N≦0[+0]反=0.00000[-0]反=1.11111三、补码对于正数来说,其原码,反码及补码形式相同。对于负数,其补码为该数的反码最未位加1求得。例如:X=+1.10111[X]原=1.10111[X]反=1.10111[X]补=1.10111X=-1010101[X]原=11010101[X]反=10101010[X]补=10101011[N]补=N0≦N2n-12n+N-2n-1N≦0[N]补=N0≦N12+N-1N≦0[+0]补=0.00000[-0]补=0.00000近代计算机中,加、减法一般都采用补码运算采用补码表示的另一个好处:1、补码中,0的表示形式是唯一的2、就是当数值信息参与算术运算时,采用补码方式是最方便的。首先,符号位可作为数值参加运算,最后仍可得到正确的结果符号符号无需单独处理;其次,采用补码进行运算时,减法运算可转化为加法运算,简化了硬件中的运算电路。四、机器数的加、减法运算1、原码运算:若两数符号相同,则将两数的数值相加,结果的符号不变;若两数符号不同,则比较两数大小,用较大数减较小数,结果符号与大数相同例:已知N1=-0.0011,N2=0.1011,求[N1+N2]原、[N1-N2]原解:[N1+N2]原=[(-0.0011)+0.1011]原∵N2N1∴运算结果为正0.1011-)0.00110.1000∴[N1+N2]原=0.1000解:[N1-N2]原=[(-0.0011)-0.1011]原∵N2与N1符号相同∴相加运算结果为负0.1011+)0.00111.1110∴[N1-N2]原=1.1110四、机器数的加、减法运算2、补码运算:两数和的补码等于两数的补码之和;两数差的补码用加法实现,其符号位和数值位一样参加运算,如产生进位,则将此位“丢掉”。运算结果符号位为“0”则为正,符号位为“1”时,则为负。[N1+N2]补=[N1]补+[N2]补[N1+N2]补=[N1]补+[-N2]补例:已知N1=-0.0011,N2=0.1011,求[N1+N2]补、[N1-N2]补解:[N1+N2]补=[N1]补+[N2]补=0.1011+1.11010.1011+)1.110110.1000∴[N1+N2]补=0.1000丢掉解:[N1-N2]补=[N1]补+[-N2]补=1.1101+1.01011.0101+)1.110111.0010∴[N1-N2]补=1.0010丢掉四、机器数的加、减法运算3、反码运算:循环进位反码运算同补码运算一样,两数和的反码等于两数的反码之和,两数差的反码用加法来实现。但反码运算中如符号位产生了进位,则此进位要加到和数的最低位。[N1+N2]反=[N1]反+[N2]反[N1+N2]反=[N1]反+[-N2]反例:已知N1=-0.0011,N2=0.1011,求[N1+N2]反、[N1-N2]反解:[N1+N2]反=[N1]反+[N2]反=1.1100+0.10111.1100+)0.101110.0111+)10.1000∴[N1+N2]反=0.1000解:[N1-N2]反=[N1]反+[-N2]反=1.1100+1.01001.1100+)1.010011.0000+)11.0001∴[N1-N2]反=1.0001五、十进制的补数计算机中常用二进制代码直接表示十进制,为使十进制数的减法运算也能转换成加法运算,则用补数来表示十进制。1、对10的补数:对正数N:符号位为0,数值部分为N本身对负数N:[N]10补=10n+N-10n-1N0例:[-32.24]10补=103-32.24=967.762、对9的补数:对正数N:符号位为0,数值部分为N本身对负数N:[N]9补=10n-10-m+N-10n-1N0其中:n为整数部分的位数;m为小数部分的位数例:[-32.24]9补=103-10-2-32.24=967.75减法变加法运算后,如有进位,将进位就丢掉减法变加法后,如有进位,将进位加在最低位上§1.4数的定点表示和浮点表示一、数的定点表示:定点数是计算机内最基本的一种数据表示,其小数点固定不变。定点数整数:小数点固定在数的最低位右端小数或分数:小数点固定在数的最左端定点小数的数域是:2-n≤|N|≤1-2-n注:计算机进行定点运算时,参加运算的数及结果不能超出数域范围,否则会出现错误的结果。0110101001101010··符号数值部分小数点符号小数点数值部分二、数的浮点表示:在工程实际应用中,数值范围很大的数其精度要求往往不高,如星球之间的距离很远,故分辨率以光年为单位。精度要求很高的数其范围往往较小,如半导体制造工艺中以微米、亚微米计。这样若能将比例因子以恰当的形式包含在数中,使之可根据每一个数的需要而浮动。在有限位数的前提下,既能表示绝对值很大的数(相对分辨率降低),也可以具有很高的精度(相对数值范围减少)。实质上是让小数点不固定,根据需要浮动,故称浮点表示法。浮点数是指数中的小数点的位置不固定,或者说是浮动的。其表示形式为:N=2J×S其中:S为数N的尾数;J表示N的阶码;2为阶码的基数浮点数指数部分(阶码):表示小数点浮动的位置尾数部分:表示数的符号和有效数位01010010阶符阶码尾符尾数210×0.1010定点数和浮点数的优缺点:1、位数相同时,浮点数表示的范围比定点数的范围大;2、浮点数运算规则比定点数运算规则复杂。§1.5数码和字符的代码表示一、十进制数的二进制编码:在数字系统或计算机中,可以用4位二进制数的代码来表示1位十进制数。这种十进制数的二进制编码简称为二—十进制码或BCD码。1、8421BCD码:8421BCD码是一种有权码,按权展开如下:N=a3W3+a2W2+a1W1+a0W0其中:W3=8,W2=4,W1=2,W0=1注:1、这种码具有奇偶特性。最低位为1时,为奇数;最低位为0时,为偶数。2、8421BCD码不允许出现1010—1111这几个代码。2、2421BCD码:2421BCD码也是一种有权码,按权展开如下:N=a3W3+a2W2+a1W1+a0W0其中:W3=2,W2=4,W1=2,W0=1注:2421码是一种“对9的自补”代码。0和9,1和8……的对应码位互为反码。3、余3码:余3码是由8421BCD码加3后形成的。也是一种对9的自补代码注:两个余3码相加的和如果没有进位,则和数需要减3才能保持结果余3;如果有进位,则和数需要加3才能保持结果余3十进制数码8421BCD码2421码余3码0000000000011100010001010020010001001013001100110110401000100011150101101110006011011001001701111101101081000111010119100111111100二、可靠性编码:为了使代码产生及传送过程中不易出错,以及出错时容易发现,除提高计算机本身的可靠性外,还采用可靠性编码。1、格雷码:又叫循环码,其任意两个相邻的代码之间仅有一位不同。转换方法:二进制数码中相邻两字符两两异或十进制数码0123456789二进制数码0000000100100011010001010110011110001001格雷码0000000100110010011001110101010011001101B=1100G=1010G=1010B=11002、奇偶校验码:信息由:信息位+奇偶校验位组成当信息位和校验位中1的总数为奇数时,称为奇校验;当信息位和校验位中1的总数为偶数时,称为偶校验;注:奇偶校验码只能发现代码中奇数位出错的情况,而不能发现偶数位出错的