2第三章信息编码与数据表示数值数据的表示3.1浮点机器数的表示方法数据格式3.2定点机器数的表示方法3.33.4非数值数据的表示3.5校验码3.6现代计算机系统的数据表示3.7本章小结33.1数值数据的表示进位计数制一不同数制之间的相互转换二十进制数的编码三4一、进位计数制数制的两大要素:基数R:指在这种进位制中允许使用的基本数码个数。基数为R的数制称为R进制数。R进制数的主要特点就是逢R进1。权Wi:权也称位权,指某一位i上的数码的权重值,即权与数码所处的位置i有关。Wi=Ri。假设任意数值N用R进制数来表示,形式为:N=(Dm-1Dm-2…D0.D-1D-2…D-k)R其中,Di为该进制的基本符号,Di∈[0,R-1],i=-k,-k+1,……,m-1,m;小数点在D0和D-1之间。5一、进位计数制则数值N的实际值为:1)(mkiiiRDN例如:R=10,即十进制数。它的每一位上的数码Di只能取0,1,2,……9;各个数码的权为10i,i指示数码所处的位置,个位i=0,十位i=1,百位i=2,依此类推。思考:二进制、八进制、十六进制?6一、进位计数制例1:(2345.459)10=2×103+3×102+4×101+5×100+4×10-1+5×10-2+9×10-3例2:(11011.011)2=1×24+1×23+0×22+1×21+1×2-0+0×2-1+1×2-2+1×2-3=(27.375)10例3:(123.67)8=1×82+2×81+3×80+6×8-1+7×8-2=(83.859375)107二、不同数制之间的相互转换常用的几种数制的对应关系1二、八、十六进制转换为十进制2十进制转换为二、八、十六进制38(1)常用的几种数制的对应关系十进制二进制八进制十六进制十进制二进制八进制十六进制000000081000108100011191001119200102210101012A300113311101113B401004412110014C501015513110115D601106614111016E701117715111117F161000020109(2)二、八、十六进制转换为十进制转换方法:加权求和。(按式4-1)例:(5AC.E6)16=5×162+10×161+12×160+14×16-1+6×16-2=(1452.8984375)10十进制(Decimal)、二进制(Binary)、八进制(Octal)、十六进制(Hexdecimal)数分别用D、B、Q、H来标志。例如:(1011)2→(1011)B→1011B→1011b(123.45)2→(123.45)D→123.45D→123.45(2B.D)16=(2B.D)H=(43.8125)10=(53.64)Q10(3)十进制转换为二、八、十六进制转换方法:可以分为以下两种方法直接转换:十进制→二、八、十六进制间接转换:十进制→二进制→八、十六进制(a)十进制转化为R进制(b)二进制转化为八、十六进制11(a)十进制转化为R进制转换方法整数部分:除以R取余,先得低位,直到商为0。小数部分:乘R取整,先得高位,直到积为0或者达到精度要求为止。例:(123.75)10=(?)2(123.75)10=(?)81111011.11173.612小数部分的精度要求当小数部分不能整除为二进制时,则乘以2取整的过程中,积不会为0;或者当小数部分转化为二进制位数很长,这时由精度来决定二进制位数。例如:(0.35)10=(?)2无法整除(0.6875)10=(?)2位数太长若要求精度大于10%,则表示“=”左右两边的十进制值的差的绝对值10%。则我们只需取4位二进制小数即可满足要求,因为10%2-4。13(b)二进制转化为八、十六进制二进制→八进制以小数点为中心分别向两边分组,每三位一组,写出对应的八进制数字。(不够位数则在两边加0补足3位)二进制→十六进制以小数点为中心分别向两边分组,每四位一组,写出对应的十六进制符号。(不够位数则在两边加0补足4位)例:(1011111.11)2=(?)8=(?)16137.65F.C14思考1:八、十六进制如何转化为二进制?八进制→二进制:将每位八进制数展开为3位二进制数,最高位和最低位的0可以略去。十六进制→二进制:将每位十六进制数展开为4位二进制数,最高位和最低位的0可以略去。例:(765.23)8=(?)2例:(765.23)16=(?)2111110101.01001111101100101.0010001115思考2:计算机中为什么采用二进制表示数据?1、具有二值状态的物理器件容易实现。2、二进制的运算规则简单,硬件实现容易。3、具有逻辑特性,可代表“真假”、“是非”。16三、十进制数的编码提出的问题:如何在计算机内使用二进制来表示十进制数据?(1)二-十进制码(BCD码)(2)十进制数串的表示方法17(1)二-十进制码(BCD码)BCD(BinaryCodedDecimal)码:使用二进制来编码十进制数字0~9。编码方法:一般使用4位二进制编码来表示1位十进制数字,在16个编码中选用10个来表示数字0~9。不同的选择构成不同的BCD码。分类:有权码:编码的每一位都有固定的权值,加权求和的值即是表示的十进制数字。如8421码、2421码、5211码、4311码、84-2-1码等。无权码:编码的每一位并没有固定的权,主要包括格雷码、余3码等。18(1)二-十进制码(BCD码)十进制数8421码2421码5211码4311码84-2-1码格雷码余3码0000000000000000000000000001110001000100010001011100010100200100010001100110110001101013001100110101010001010010011040100010001111000010001100111501011011100001111011111010006011011001010101110101010100170111110111001100100110001010810001110111011101000110010119100111111111111111110100110019几种常见的BCD码8421码:特点:4位二进制数位的权从高到低依次是8、4、2、1;8421码实际上就是十进制数字0~9的二进制编码本身。是最常用的一种BCD码,在没有特别指出的一般情况下,所提到的BCD码通常就是指8421码。格雷码:特点:又叫循环码,它的任何相邻的两个编码(例如2和3、7和8、9和0等)之间只有一位二进制位不同。优点:是用它构成计数器时,在从一个编码变到下一个编码时,只有一个触发器翻转即可,波形更完美、可靠。格雷码的编码方案有许多种。余3码:对应的8421码加上0011构成的。20(2)十进制数串的表示方法字符串形式:用ASCII码来表示十进制数字或符号位,即1个字节存放1位十进制数字或符号位。压缩的十进制数串形式:用BCD码来表示十进制数字,即1个字节存放2个十进制的数字;符号位放在最低位数字位之后,一般用C(12)表示正号,用D(13)表示负号。例如+258被表示成258CH,占用两个字节,-34被表示为034DH,也占用两个字节。共同点:必须给出它在主存中的首地址和位长。21(2)十进制数串的表示方法采用十进制表示数据的优点是:对于需要大量地进行输入输出数据而运算简单的场合,大大减少了十→二和二→十转换,提高了机器的运行效率;十进制数串的位长可变,许多机器中规定该长度从0到31,有的甚至更长。不受定点数和浮点数统一格式的约束,从而提高了数据的表示范围和运算精度。223.2数据格式计算机中参与运算的数据有两种:无符号数据(Unsigned):所有的二进制数据位数均用来表示数值本身,没有正负之分。带符号数据(Signed):则其二进制数据位,包括符号位和数值位。计算机中的带符号数据又称为机器数。1、机器数与真值机器数:把“+”、“-”符号代码化,并保存在计算机中的数据。真值:是指机器数所真正表示的数值,用数值并冠以“+”、“-”符号的方法来表示。机器数的编码方法:原码、反码、补码、移码。233.2数据格式计算机硬件如何区分它们是无符号数据还是带符号数据的呢?例:(IntelX86系列CPU)假设AX=(1111111111111111)2,BX=(0000000000000001)2,那么执行下面两段程序时,计算机硬件将把AX和BX中的数据看成是不同的数据。程序ACMPAX,BX;结果影响标志位JLL1;有符号数小于转移执行JL指令时,操作数AX和BX被当作有符号数据,AX=(-1)10,BX=(+1)10,所以执行结果是转移到L1标号处执行。程序BCMPAX,BXJBL1;无符号数小于转移执行JB指令时,操作数AX和BX被当作无符号数据,AX=(65535)10,BX=(+1)10,所以执行结果是不转移,顺序执行。243.2数据格式2、小数点的表示方法在机器数中,小数点及其位置是隐含规定的;有两种隐含方式:•定点数:小数点的位置是固定不变的•浮点数:小数点的位置是浮动的定点机器数分为定点小数、定点整数两种。浮点机器数中小数点的位置由阶码规定,因此是浮动的。253.2数据格式X0符号位数值位X1X2……Xn﹒小数点隐含位置X0符号位数值位X1X2……Xn﹒小数点隐含位置ESE1E2……Em阶码尾数MSM1M2……Mn(a)定点整数格式(c)浮点数格式(b)定点小数格式263.3定点机器数的表示方法定点机器数的小数点的位置是固定不变的,可以分为两种:定点小数:用于表示纯小数,小数点隐含固定在最高数据位的左边,整数位则用于表示符号位。定点整数:用于表示纯整数,小数点位置隐含固定在最低位之后,最高位为符号位。1、原码表示法3、反码表示法2、补码表示法4、移码表示法5、定点机器数转换271、原码表示法(1)表示方法:最高位表示数的符号,其他位表示数值位。符号位:0-正数,1-负数。数值位:与绝对值相同。对于定点整数:若X=+X1X2……Xn,则[X]原=0,X1X2……Xn;若X=-X1X2……Xn,则[X]原=1,X1X2……Xn。对于定点小数:若X=+0.X1X2……Xn,则[X]原=0.X1X2……Xn;若X=-0.X1X2……Xn,则[X]原=1.X1X2……Xn。“,”和“.”只用于助记,在计算机中并无专用部件来表示281、原码表示法例1:X=1011,Y=-1011,则:[X]原=;[Y]原=;例2:X=0.1101,Y=-0.1101,则:[X]原=;[Y]原=;例3:X=1011,Y=-0.1101,求X和Y的8位原码机器数。[X]原=;[Y]原=;例4:[0]原=?0,10111,10110.11011.11010,00010111.1101000291、原码表示法(2)0的表示:0的原码表示有两种形式,即分别按照正数和负数表示。[+0]原=00…0[-0]原=10…0(3)表示范围:对于n+1位原码机器数X,它所能表示的数据范围为:定点整数:-(2n-1)≤X≤2n-1定点小数:-(1-2-n)≤X≤1-2-n包括1位符号位,n位数值位302、补码表示法(1)表示方法:最高位为符号位,其他位为数值位。符号位:0-正数,1-负数。数值位:正数时,与绝对值相同;负数时,为绝对值取反后,末位加1。对于定点整数:若X=+X1X2……Xn,则[X]补=0,X1X2……Xn;若X=-X1X2……Xn,则[X]补=1,X1X2……Xn+1。对于定点小数:若X=+0.X1X2……Xn,则[X]补=0.X1