第二章计算机中信息的表示及其运算2.1进位计数制一、进位计数制:权:一个数中每个数码的位置规定了该数码所具有的数值,称为权;基值:数制中数码的个数称为基值;进位计数制:以基值为进位的计数制,位数的权是基值的幂。常用的计数制:十进制:D(Decimal),二进制:B(Binary),八进制:O(Octal),十六进制:H(Hexadecimal)二、不同计数制之间的转换1.其它进制换成十进制a)按“权”转换法(示例:10111.011B;675.5O;ab.c)b)基值反复相乘、相除法(自己看书,注意整数乘,小数除)2.十进制换成其它进制a)整数部分:除基取余法b)小数部分:乘基取整法(例)十进制转换为二进制整数除2取余数直到商为0为止例:(11)10()221125222101101高位低位∴(11)10=(1011)2十进制转换为二进制小数乘2取整数直到小数为0或达到精度例:(0.5625)10()2∴(0.5625)10=(0.1001)21.125025625.00.250021250.00.500022500.00.00001.000025000.01001高位低位※减权定位法要求:熟练说出20216的十进制的值4位:0168位:025610位:0102416位:0655363.二进制、八进制和十六进制之间的转换八进制相当于三位的二进制(书上例题)十六进制相当于四位的二进制2.2机器内数据及符号的表示方法计算机中数据的最基本表示方式是二进制表示。需要解决3个问题:1)、数值的表示方法;2)、小数点的表示方法;3)、正负号的表示方法。一、整数的表示1.不带符号的整数数的表示范围:4位:0000B~1111B,0H~FH,0D~15D;8位:00000000B~11111111B,00H~FFH,0D~255D;16位:0000H~FFFFH,0D~65535D;n位数:0D~(2n-1)D2、带符号的整数带符号的整数一种最简单的表示方法是用最高位表示数的正负,“0”表示正,“1”表示负。数的表示范围4位-7D~+7D;8位:-127D~+127D;16位:-32767D~+32767D;二、小数的表示1.定点表示:定点表示方法只能表示两种数a)纯小数:默认小数点在符号位之后,此时所有数字均为小数。b)纯整数:默认小数点在最低位之后,此时所有数字均为整数。2.浮点表示:任何一个二进制数N都可以用两个带符号的整数表示:2JNS阶值阶符尾数尾符2JNSfjmjjjj321fSnSSSS321尾数值阶符阶码值数符阶码尾数代表浮点数的符号1000101101011010如:-0.101011010x2-00010IEEE浮点数标准,分为两种:浮点数和双精度数,浮点数用4个字节32位表示,双精度数用8个字节64位表示。S偏移的阶码尾码的有效位313023220S偏移的阶码尾码的有效位636252510浮点数:双精度数:三、机器数:数连同其符号在机器中的表示加以数值化。真值:+0.101-0101-0.101-1101特点:字长有限;符号数值化;小数点按约定方式标出。一旦符号数字化之后,符号和数值就形成了一种新的编码。我们所关心的:在运算过程中,符号位能否和数值部分一起参加运算?如果参加运算,符号位又需要作哪些处理?这些问题都与符号位和数值位所构成的编码有关,这些编码就是所要学习的原码、补码和反码。1.原码表示法带符号的绝对值表示(1)定义整数x为真值n为整数的位数如x=+1110[x]原=0,1110[x]原=24+1110=1,1110x=1110[x]原=0,x2n>x≥02nx0≥x>2n用逗号将符号位和数值位隔开四、整数/小数的原码、补码和反码表示小数x为真值如x=+0.1101[x]原=0.1101x=0.1101[x]原=1(0.1101)=1.1101x1>x≥0[x]原=1–x0≥x>1x=0.1000000[x]原=1(0.1000000)=1.1000000x=+0.1000000[x]原=0.1000000用小数点将符号位和数值位隔开用小数点将符号位和数值位隔开(2)举例例1:已知[x]原=1.0011求x解:例2:已知[x]原=1,1100求x解:x=1[x]原=11.0011=0.0011x=24[x]原=100001,1100=1100––0.00111100由定义得由定义得例4求x=0的原码解:设x=+0.0000例3已知[x]原=0.1101求x解:∴x=+0.1101同理,对于整数[+0]原=0,0000[+0.0000]原=0.0000x=0.0000[0.0000]原=1.0000[0]原=1,0000∴[+0]原≠[0]原根据定义∵[x]原=0.1101原码的特点:简单、直观但是用原码做加法时,会出现如下问题:能否只做加法?找到一个与负数等价的正数来代替这个负数就可使减加加法正正加加法正负加法负正加法负负减减加要求数1数2实际操作结果符号正可正可负可正可负负(1)补的概念•时钟逆时针-363顺时针+9615-1232.补码表示法可见3可用+9代替记作3≡+9(mod12)同理4≡+8(mod12)5≡+7(mod12)时钟以12为模减法加法称+9是–3以12为模的补数结论一个负数加上“模”即得该负数的补数两个互为补数的数它们绝对值之和即为模数•计数器(模16)–101110110000+010110111000010110000?可见1011可用+0101代替记作1011≡+0101(mod24)同理011≡+101(mod23)0.1001≡+1.0111(mod2)自然去掉(2)补码定义整数x为真值n为整数的位数[x]补=0,x2n>x≥02n+1+x0>x≥2n(mod2n+1)如x=+1010[x]补=27+1+(1011000)=1000000001011000[x]补=0,1010x=10110001,0101000用逗号将符号位和数值位隔开小数x为真值x=+0.1110[x]补=x1>x≥02+x0>x≥1(mod2)如[x]补=0.1110x=0.11000001.0100000[x]补=2+(0.1100000)=10.00000000.1100000用小数点将符号位和数值位隔开(3)求补码的快捷方式=100000=1,011010101+1=1,0110又[x]原=1,1010则[x]补=24+11010=11111+11010=1111110101010当真值为负时,补码可用原码除符号位外每位取反,末位加1求得+1设x=1010时(4)举例解:x=+0.0001解:由定义得x=[x]补–2=1.0001–10.0000[x]原=1.1111例6已知[x]补=1.0001求x[x]补[x]原?由定义得例5已知[x]补=0.0001求x∴x=0.1111–=0.1111–例7解:x=[x]补–24+1=1,1110–100000[x]原=1,0010当真值为负时,原码可用补码除符号位外每位取反,末位加1求得[x]补[x]原?∴x=0010=0010求x已知[x]补=1,1110由定义得真值0,10001101,01110100.11101.00100.00000.00001.00000,10001101,10001100.11101.11100.00001.0000不能表示练习求下列真值的补码x=+70x=0.1110x=0.0000x=–70x=0.1110x=0.0000x=1.0000[1]补=2+x=10.00001.0000=1.0000[+0]补=[0]补由小数补码定义[x]补=x1>x≥02+x0>x≥–1(mod2)=1000110=–1000110[x]补[x]原3.反码表示法(1)定义整数[x]反=0,x2n>x≥0(2n+1–1)+x0≥x>2n(mod2n+11)如x=+1101[x]反=0,1101=1,0010x=1101[x]反=(24+11)1101=111111101用逗号将符号位和数值位隔开x为真值n为整数的位数小数x=+0.1101[x]反=0.1101x=0.1010[x]反=(22-4)0.1010=1.11110.1010=1.0101如[x]反=x1>x≥0(2–2-n)+x0≥x>1(mod22-n)用小数点将符号位和数值位隔开x为真值(2)举例例10求0的反码设x=+0.0000x=–0.0000[+0.0000]反=0.0000[–0.0000]反=1.1111∴[+0]反≠[–0]反解:同理,对于整数[+0]反=0,0000[–0]反=1,1111例9已知[x]反=1,1110求x由定义得x=[x]反–(24+1–1)=1,1110–11111=–0001例8已知[x]反=0,1110求x解:由定义得x=+1110解:三种机器数的小结对于正数,原码=补码=反码对于负数,符号位为1,其数值部分原码除符号位外每位取反末位加1补码原码除符号位外每位取反反码最高位为符号位,书写上用“,”(整数)或“.”(小数)将数值部分和符号位隔开例11000000000000000100000010…011111111000000010000001111111011111111011111111…128129-0-1-128-127-127-126二进制代码无符号数对应的真值原码对应的真值补码对应的真值反码对应的真值012127…253254255…-125-126-127…-3-2-1…-2-1-0…+0+1+2+127…+0+1+2+127…+0+1+2+127…+0设机器数字长为8位(其中一位为符号位)对于整数,当其分别代表无符号数、原码、补码和反码时,对应的真值范围各为多少?2.3信息的编码表示一、BCD码:BinaryCodedDecimal常用的BCD码也称为8421BCD码,每个十进制数码用四位的二进制表示。主要用于显示。二、ASCII码:AmericanStandardCodeforInformationInterchangeASCII码是英文字母、数字和常用符号在计算机中的标准表示方法,采用7位二进制编码,共有128个符号B6B5B4B3B2B1B00000010100111001011101110000NULDELSP0@P`p0001SOHDC1!1AQaq0010STXDC22BRbr0011ETXDC3#3CScs0100EOTDC4$4DTdt0101ENQNAK%5EUeu0110ACKSYN&6FVfv0111BELETB'7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;K[k{1100FFFS,L\l|1101CRGS-=M]m}1110SORS.N^n~1111SIUS/?O_oDEL三、汉字编码现在常用的汉字的编码方式现在主要有三种:国标编码(GB码)、BIG5码和Unicode码。1、GB码GB码是我国的国家标准,GB2312-80,编码汉字分为两级;每个汉字(图形符号)采用双字节表示。每个字节只用低7位,最高位恒为1。由于低7位中有34种状态是用于控制字符,因此,只有94(128-34=94)种状态可用于汉字编码。这样,双字节的低7位只能表示94×94=8836种状态;区位码汉字编码表有94行、94列,其行号称为区号,列号称为位号。双字节中,用高字节表示区号,低字节表示位号。非汉字图形符号置于第1~11区,一级汉字3755个位于第16~55区,二级汉字3008个置于第56~87区。第一个汉字:“啊”,最后一个汉字:“齄(zha)”汉字的区位码与国标码的关系:◆十六进制:国标码高位字节=区位码区号(16进制)+20H国标码低位字节=区位码位号(16进制)+20H◆十进制:国标码高位字节(10)=区位码区号+