您好,欢迎访问三七文档
第2章数制与编码2.1进位计数制•2.1.1十进制数的表示–位置记数法–按权展开法10).()(21012110mnnaaaaaaaN012110010110210110)(aaaaNnnnnmmaaa1010210121110nmiiia•2.1.2二进制数的表示–由低位向高位“逢二进一”–位置计数法:––按权展开法–对二进制数的表示,可以在数字右下角标注2或B(Binary的首字母),如(10110)2、(10110)B22).()(210121mnnaaaaaaaN0121220212221)(aaaaNnnnnmmaaa222212112nmiiia二进制运算规则简单。其运算规则如下:加法规则0+0=00+l=1l+0=1l+1=0(同时向相邻高位进1)减法规则0―0=00―1=1(同时向相邻高位借1)1―0=11―1=0乘法规则0×0=00×1=0l×0=01×1=l除法规则0÷1=0l÷1=1•2.1.3其他进制数的表示–八进制数的基数是8,采用的数码是0,l,2,3,4,5,6,7。计数规则是从低位向高位“逢八进一”,通常在八进制数字的右下角标注8或数字后边接O(Octal的首字母)。–十六进制数的基数为16,采用的数码是0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。其中,A,B,C,D,E,F分别代表十进制数字10,11,12,13,14,15。十六进制的计数规则是从低位向高位“逢十六进一”。通常,在十六进制数字盼右下角标注16或数字后边接H(Hex的首字母)。十进制数二进制数八进制数十六进制数(r=10)(r=2)(r=8)(r=16)00000OO0l000l011200lO02230011033401000445010l055601100667011l0778100010891001119lO101012A1l101113B12110014C13110l15D1411lO16E15111117F表2.1不同进位计数制的各种数码2.2数制转换•2.2.1二进制数与十进制数的转换–二进制数转换成十进制数是很方便的,只要将二进制数写成按权展开式,并将式中各乘积项的积算出来,然后各项相加,即可得到与该二进制数相对应的十进制数。例如(10110.01)2=l×24+0×23+1×22+l×21+0×20+0×2-1+1×2-2=16+0+4+2+0+0十0.25=(22.25)10十进制数转换成二进制数时,需将待转换的数分成整数部分和小数部分,并分别加以转换。例如将58.625转换成二进制数时,先转换整数58,再转换小数0.625,然后合成在一起即可。•2.2.2八进制、十六进制与二进制间的转换–八进制和十六进制的基数分别是8和16,并且:8=23,16=24;所以它们与二进制之间具有整倍数的关系,因此可以进行直接转换。–将二进制数从小数点开始,分别向左、右按3位或4位分组,不足3位或4位的则需在最高位或最低位补0,最后将每组用对应的八进制数或十六进制数代替。例如:(332.53)O=(11011010.101011)B=(DA.AC)H2.3带符号数的代码表示•2.3.1真值与机器数–一个带符号的数由两部分组成:一部分表示数的符号,另一部分表示数的数值。–数的符号是一个具有正、负两种值的离散信息,它可以用一位二进制数来表示,习惯上以0表示正数,而以1表示负数例如,二进制正数+0.1101在机器中的表示如图2.1(a)所示,二进制负数-0.1101在机器中的表示如图2.1(b)所示。图2.1二进制数在机器中的表示有符号数表示•真值:把用“+”、“-”表示的数称为真值数,例如:-56,+123等。•机器数:一个数及其符号在机器中的数值化表示。符号位上的0、1分别来表示正、负。其值称为机器数的真值。–例如:-56用机器数表示(-56)10=(10111000)2+56用机器数表示(+56)10=(00111000)2•机器数可以用不同的方法来表示,常用的有原码、反码、补码和移码表示法。•2.3.2原码–原码又称为“符号---数值表示”。在以原码形式表示的正数和负数中,第1位表示符号位,对于正数,符号位记作0,对于负数,符号位记作1,其余各位表示数值部分。–假如两个带符号的二进制数分别为N1和N2,其真值形式为N1=+10101N2=-01101则Nl和N2的原码表示形式为[N1]原=010101[N2]原=101101•小数原码的定义:•即:[X]原=符号位+|X|[X]原=X0≤X11-X-1X≤0•例:X=+0.1011[X]原=01011X=-0.1011[X]原=11011•由于小数点位置已默认在符号位之后,书写时可以将其省略。•零的原码也有两种表示形式:[+0]原=00000[-0]原=10000【例】•X=+105,[Ⅹ]反=[Ⅹ]原=01101001•X=-105,[Ⅹ]原=11101001•2.3.3反码–对于负数,反码的数值是将原码数值按位求反,即原码的某位为1,反码的相应位就为0,或者原码的某位为0,反码的相应位就为l。而对于正数,反码和原码相同。所以,反码数值的形成与它的符号位有关。假如两个带符号的二进制数分别为N1和N2,其真值形式为N1=+11011N2=-01101则N1和N2的反码表示形式为[N1]反=011011[N2]反=110010反码表示法•反码通常用来作为由原码求补码或由补码求原码的中间过渡。•小数反码的定义为:[X]反=X0≤X1(2-2-n)+X-1X≤0•例:X=+0.1011(n=4),则[X]反=01011X=-0.1011(n=4),则[X]反=2-2-4+X=2-2-4+(-0.1011)=10100•反码零有两种表示形式:[+0]反=00000[-0]反=11111【例】•X=+105,[Ⅹ]反=[Ⅹ]原=01101001•X=-105,[Ⅹ]反=10010110•X=(+127)10=(01111111)反•X=(-127)10=(10000000)反8位反码其数值范围为+127~-127,而0有+0、-0两种表示。•2.3.4补码–补码又称为“对2的补数”。在补码表示法中,正数的表示同原码和反码的表示是一样的,而负数的表示却不同。对于负数,其符号位为1,而数值位是将原码按位变反加1,即按位变反,再在最低位加1。假如两个带符号的二进制数分别为Nl和N2,其真值形式为Nl=十11011N2=-01010则N1和N2的补码表示形式为[N1]补=O1101l[N2]补=110110补码表示法•小数补码的定义为:•即:[X]补=2•符号位+X(mod2)•例:X=+0.1011,则[X]补=01011X=-0.1011,则[X]补=2+X=2+(-0.1011)=10101[X]补=X0≤X12+X=2-|X|-1≤X0•对于负数,根据定义,需要做一次减法才能得到补码,如果这样求补码会比较麻烦,实际上,求负数的补码可以有一种比较简单的方法:•先求出该负数的原码形式,保持符号位不变(为1),将其数值位各位取反,然后在最末位加上“1”。•数值零的补码表示形式是惟一的,即:[+0]补=[-0]补=00000•根据小数补码定义,X=-1时,[X]补=2+X=10.0000-1.0000=1.0000可见,-1本不属于小数范围,但却有[-1]补存在,这是由于补码中零的形式只有一种,故它能比原码多表示一个非0的数值。【例3】•X=+105,[Ⅹ]补=[Ⅹ]原=01101001•X=-105,[Ⅹ]补=10010111•X=(+127)10=(01111111)补•X=(-127)10=(10000001)补•8位补码其数值范围为+127~-128,而0仅有一种表示:00000000。•对上面的三种编码,可归纳出具有如下特点:(1)最高位都作为符号位。(2)如果真值为正,则原码、补码和反码的表示形式都相同,符号位都为0,且数值部分与真值相同。•(3)如果真值为负,则原码、补码和反码的表示形式各不相同,但是符号位都为1,且数值部分的关系为:原码数值部分与真值相同,补码数值部分为原码的取反加1,反码数值部分为原码的每位取反。•由上述特点,可看出对同一数据在几种机器数编码表示间的转换关系:(1)当数据为正数时:•转换方法:符号位、数值位都保持不变,即:[X]原=[X]补=[X]反。(2)当数据为负数时:•原码与反码间转换方法:符号位保持不变,数值位按位取反。•原码与补码间转换方法:符号位保持不变,数值位按位取反后末位加1。•反码与补码间转换方法:符号位保持不变,数值位在末位加1或减1。•在计算机中,当用串行电路将负数原码转换成补码形式时(或反之),也经常采用以下方法:自低位开始转换,从低位向高位,在遇到第1个“1”之前,保持各位的“0”不变,第1个“1”也不变,以后的各位按位取反,最后保持符号位不变。•例:设机器数字长8位,对于整数,当其代表无符号数时对应的真值范围为多少?分别代表原码、补码和反码时(其中有一位符号位),对应的真值范围又各为多少?二进制代码无符号数对应的真值原码对应的真值补码对应的真值反码对应的真值000000000000000100000010┇0111111001111111100000001000000110000010┇111111011111111011111111012┇126127128129130┇253254255+0+1+2┇+126+127-0-1-2┇-125-126-127+0+1+2┇+126+127-128-127-126┇-3-2-1+0+1+2┇+126+127-127-126-125┇-2-1-0表3-98位二进制代码与真值的关系•设X=+75则[X]补=01001011,•设X=-75,则[X]补=10110101。•即:对[+X]补按位取反末位加1,就得到[-X]补。•对[-X]补按位取反末位加1,就得到[+X]补。•因此,“求补运算”就是指对一补码机器码进行“按位取反,末位加1”的操作。通过求补运算可以得到该数负真值的补码。•鉴于补码数具有这样的特征,用补码表示有符号数,则减法运算就可以用加法运算来替代,因此,在计算机中只需设置加法运算器就可以了。4、移码表示法•当真值用补码表示时,由于符号位和数值部分一起编码,与习惯上的表示法不同,因此人们很难从补码的二进制表示形式上直接判断其真值的大小。•为了方便的从数据机器数的二进制表示形式上看出数据真值的大小,在有些计算机中引入了移码表示,通常用来表示整数数据,•它的定义如下:[X]移=2n+X(2nX≥-2n)•式中X为真值,n为整数的位数,即数值位个数。•其实移码就是在真值上加一个常数2n。在数轴上移码所表示的范围恰好对应于真值在数轴上的范围向轴的正方向移动2n个单元。如图3-2所示,这就是移码名字的由来。其中2n可称为偏移量。•进一步观察发现,同一个真值的移码和补码之间仅差一个符号位,若将补码的符号位由“0”改为“1”,或由“1”改为“0”,即得该真值的移码。表3-10真值、补码和移码对照表真值X[X]补[X]移[X]移对应的十进制整数-100000-11111-11110┇-00001±00000+00001+00010┇+11110+11111100000100001100010┇111111000000000001000010┇011110011111000000000001000010┇011111100000100001100010┇111110111111012┇31323334┇6263【例】写出下列各数的原码、反码、补码、移码(用8位二进制数表示),其中最高位是符号位。如果是纯小数,小数点在最高位之后;如果是整数,小数点在最低位之后。–(1)27/64(2
本文标题:第2章 数制与编码
链接地址:https://www.777doc.com/doc-3978021 .html