数值型数据的表示和转换在计算机系统中,常用的几种数制有下列几种:二进制R=2,基本符号为0和1八进制R=8,基本符号为0,1,2,3,4,5,6,7十六进制R=16,基本符号为0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F十进制R=10,基本符号为0,1,2,3,4,5,6,7,8,91.R进制数转换成十进制数•R进制数转换成十进制数时,只要“按权展开”即可。例1:二进制数转换成十进制数。(10101.01)2=(1×24+0×23+1×22+0×21+1×20+0×2-1+1×2-2)10=(21.25)10例2:八进制数转换成十进制数。(307.6)8=(3×82+7×80+6×8-1)10=(199.75)10例3:十六进制数转换成十进制数。(3A.C)=(3×161+10×160+12×16-1)10=(58.75)102.十进制数转换成R进制数•十进制数转换成R进制数时,要将整数和小数部分分别进行转换。(1)整数部分的转换•整数部分的转换方法是“除基取余”。例1:将十进制整数835分别转换成二、八进制数。01813810488358余数低位3051(835)10=(1503)8高位417262835104208521322222低位余数高位001100361022220111(835)10=(1101000011)2(2)小数部分的转换•小数部分的转换方法是“乘基取整”。例2:将十进制小数0.6875分别转换成二、八进制数。0.6875×2=1.3751整数部分0.375×2=0.7500.75×2=1.510.5×2=1.01高位低位(0.6875)10=(0.1011)2整数部分高位低位0.6875×8=5.550.5×8=4.04(0.6875)10=(0.54)8例3:将十进制小数0.63转换成二进制数。整数部分高位低位0.63×2=1.2610.26×2=0.5200.52×2=1.0410.04×2=0.080(0.63)10=(0.1010)2(近似值)(3)含整数、小数部分的数的转换•只要将整数、小数部分分别进行转换,得到转换后的整数和小数部分,然后再这两部分组合起来得到一个完整的数。例4:将十进制数835.6875转换成二、八进制数。(835.6875)10=(1101000011.1011)2=(1503.54)83.二、八、十六进制数的相互转换(1)八进制数转换成二进制数(13.724)8=(001011.111010100)2=(1011.1110101)2(2)十六进制数转换成二进制数(2B.5E)16=(00101011.01011110)2=(101011.0101111)2(3)二进制数转换成八进制数(10011.01)2=(010011.010)2=(23.2)8(4)二进制数转换成十六进制数(11001.11)2=(00011001.1100)2=(19.C)163.2机器数在计算机中的表示方法及加减法运算●真值vs.机器数–真值:正、负号加某进制数绝对值的形式称为真值。•如二进制真值:X=+1011y=-1011–机器数:符号数码化的数称为机器数如:X=01011Y=11011●机器数特点:1、数的符号数值化2、表示范围受字长限制超出此范围__溢出3、小数点的位置要约定原码补码反码移码正数:原码、反码和补码表示都相同负数:原码、反码和补码表示不同●定点机器数的编码表示:3.2.1原码表示法原码表示法用“0”表示正号,用“1”表示负号,数值位用真值的绝对值表示。整数的符号位与数值位之间用逗号“,”隔开;小数的符号位与数值位之间用小数点“.”隔开。3.定点整数原码定义x当2n[x]原=2n-x当-2n0xx0例1:[+1101]原=0,1101[-1101]原=1,1101(默认机器字长5位)0的原码有两种表示方式:[+0]原=0,0000000;[-0]原=1,0000000结论:符号位数值化,数值位不变设[x]原=XsX1…Xn,其中Xs为符号位,共n+1位字长8位:127,-12716位:32767,-327674.定点整数原码的表示范围例1:若二进制的位数分别是8,其原码表示的最大值、最小值及表示数的个数为:注意:最高位为符号位,有效数值位分别为7。●最大值:2n-1●最小值:-(2n-1)●原码特点表示简单,易于同真值之间进行转换进行加减运算十分麻烦,本来是加法运算却可能要用减法器实现。当两个操作数符号不同且做加法运算时,先要判断两个数绝对值的大小,然后将绝对值大的数减去绝对值小的数,结果的符号以绝对值大的数为准。3.2.2补码表示法以钟表对时为例说明补码的概念假设现在的标准时间是3点整,而有一只表已经6点了,为了校准时间,可以采用两种方法:(1)逆时针:将时钟退3格(2)顺时针:将时钟向前拨9格这两种方法都能对准到3点。由此可以看出,减3和加9是等价的。就是说9是(-3)对12的补码,可以用数学公式表示为:-3=+9(mod12)(“=”为取模相等)这里12是模数。上例中6-3和6+9之所以等价,是因为表指针超过12时,将12自动丢掉,最后得到(6+9)-12=3。重要启示:负数用补码表示时,可以把减法转化为加法。1.补码的概念模:计量器具的容量,或称为模数。N位字长整数的模值为2N4位字长的机器表示的二进制整数为:0000~1111共16种状态,模为16=24。一位符号位的纯小数的模值为2补码的定义:正数的补码就是正数的本身,负数的补码是原负数加上模。x当2n[x]补=2n+1+x当-2n0xx03.定点整数补码的定义例:完成下列数的真值到补码的转换X1=+1011011X2=-1011011[X1]补=0,1011011[X2]补=27+1+x=1,0100101●机器字长为8位,定点整数补码表示范围:-27≤x≤27-14.-1的补码设补码的有效数值位为n(1)根据定义,对于整数补码有:[-1]补=2n+1-1=1,11111...1(包括符号位一共n+1个1)根据定义,对于小数补码有:[-1]补=2+(-1.0…0)=1.0...0(n个0)由此可见,“-1”既可以在整数范围内表示,也能在小数范围内表示,在计算机中有两种不同的补码表示。(2)再看负数-2n的补码表示{-2n}补=2n+1-2n=2n-1=1,0...0(n个0)因此,“-1”的补码小数表示与“-2n”的补码表示结构相同,都是:符号位为1,数值部分为n个0。5.原码与补码之间的转换正数的原码和补码显然一致。对于负数:设n=4,x=-x1x2x3x4[x]补=2n+1+x=10,0000-x1x2x3x4=11111+00001-x1x2x3x4符号位除外,每位取反,末位加1。对小数原码也同样成立。反过来,由补码求原码也同样成立。0,X2nX≥0[x]补=2n+1+X0X≥-2n0,X2nX≥0[X]原=2n-X0≥X-2n•原码求补码•先看整数原码和补码之间的转换00001xxxx14321原码--补码正数[X]补=[X]原负数符号位除外,每位取反,末位加1例:X=-1001001求[X]补[X]原=1,1001001,[X]补=1,0110110+1=1,0110111[X]补=27+1+X=100000000-01001001=1,0110111100000000-010010011,01101111.定点小数反码的定义x[x]反=2-2-n+x10x01x3.2.3反码表示法例:x=-0.1011(n=4)求[x]反[x]反=2-2-4+(-0.1011)=10.0000-0.0001-0.1011=1.1111-0.1011=1.01002.定点整数反码的定义X2nX≥0[X]反=(2n+1-1)+X0≥X-2n(mod(2n+1-1))例:X1=+1011011,[X1]反=0,1011011X2=-1011011,[X2]反=1,010010011111111—1011011101001000的补码表示是:[+0]反=00000000;[-0]反=11111111结论:正数:反码与原码相同,负数:对原码,符号位不变,其余各位取反码制表示法小结①[X]原、[X]反、[X]补用“0”表示正号,用“1”表示负号;[X]移用“1”表示正号,用“0”表示负号。②如果X为正数,则[X]原=[X]反=[X]补。③如果X为0,则[X]补、[X]移有唯一编码,[X]原、[X]反有两种编码。④移码与补码的形式相同,只是符号位相反。8位符号整数原码、反码、补码对照表真值原码补码反码+127011111110111111101111111+126011111100111111001111110……………………+2000000100000001000000010+1000000010000000100000001+0000000000000000000000000-010000000无11111111-1100000011111111111111110-2100000101111111011111101……………………-126111111101000001010000001-127111111111000000110000000-128无10000000无16位符号整数原码、反码、补码对照表真值原码补码反码+32767011111111111111101111111111111110111111111111111+32766011111111111111001111111111111100111111111111110……………………+2000000000000001000000000000000100000000000000010+1000000000000000100000000000000010000000000000001+0000000000000000000000000000000000000000000000000-01000000000000000无1111111111111111-1100000000000000111111111111111111111111111111110-2100000000000001011111111111111101111111111111101……………………-32766111111111111111010000000000000101000000000000001-32767111111111111111110000000000000011000000000000000-32768无1000000000000000无