1、第二章 电子计算机中信息的表示及其运算,进位计数制机器内数据及符号的表示方法微型计算机的数据类型数的运算方法,2.1 进位计数制,512,= 5 * 102 + 1 * 101 + 2 * 100,2.1.1 概述,基本概念权数:数值N中各数码所在的位置系数:数值N中各位置上的数码基值:数值N中各个位置上所能表示的数码 的个数,进位计数制的表示方法 假设有一数值 N N = (dn-1dn-2d1d0d-1d-m)r N = dn-1rn-1 + dn-2 rn-2 + d1 r1 + d0 r0 + d-1 r-1 + + d-m r-m r : 基值 di : 系数 r : 为权数 m,
2、n : 正整数,分别表示小数位和整数位,例 2-1-1,(43863.57)十,= 4 * 104 + 3 * 103 + 8 * 102 + 6 * 101 + 3 * 100 + 5 * 10-1 + 7 * 10-2,二进制权数:2n-1, 2n-2 系数:0,1基数:r = 2表示方法:在数字的末尾加上一个字母 B 例如:331.25 = 101001011.01 B注: 十进制数在数字的末尾加上一个字母 D,十进制和二进制之间的对应关系,例 2-1-2,= 1 * 28 + 1 * 27 + 1 * 26 + 1 * 25 + 0 * 24 + 0 * 23 + 1 * 22 + 1
3、 * 21 + 0 * 20,( 111100110 )二,二进制数的优缺点优点二进制数便于物理元件的实现二进制数运算简单二进制数使用器材少便于实现逻辑运算缺点代码冗长不便阅读,八进制(Octal)和十六进制(Hexadecimal)八进制权数:8n-1,8n-2系数:0,1,2,3,4,5,6,7基数:r = 8表示方法:在数字的末尾加上一个字母 O 例如:331.25 = 513.2 O,十进制和八进制之间的对应关系,例 2-1-3 例 2-1-4,( 647.32 )八,= 6 * 82 + 4 * 81 + 7 * 80 + 3 * 8-1 + 2 * 8-2,= ( 423.4062
4、5 )十,( 101 000 111 001 )二,= (5071)八,= (2617)十,十六进制权数:16n-1,16n-2,系数:0,1,2,3,4,5,6,7,8,9,A, B,C,D,E,F基数:r = 16表示方法:在数字的末尾加上一个字母 H 例如:331.25 = 14B.4 H,十进制和十六进制之间的对应关系,例 2-1-5,( 1010 0011 1000)二,A 3 8,= ( A38 )十六,2.1.2 不同计数制之间的转换,各种数制转换成十进制按 “权” 转换法,例 2-1-6 :将 ( 11011.11 )二 转换成十进制数,解: ( 11011.11 )二 = 1
5、*24 + 1*23 + 0*22 + 1*21 + 1*20 + 1*2-1 + 1*2-2,= 16 +8 + 0 + 2 + 1 + 0.5 + 0.25,= ( 27.75 )十,例 2-1-7 将 ( 732.6 )八 转换成十进制数,解: ( 732.6 )八 = 7*82 + 3*81 + 2*80 + 6*8-1,= 448 + 24 + 2 + 0.75,= ( 474.75 )十,基值重复相乘(相除)法整数的基值反复相乘法 设 N 是一个四位的二进制数,N = d323 + d222 + d121 + d020,= ( d322 + d221 + d1 ) * 2 + d0
6、,= ( d3 * 2 + d2 ) * 2 + d1 * 2 + d0,运算步骤从最高为开始,将最高为乘以2,加上次高位,令结果为M1M1乘以2,加上第三位,令结果为M2M2乘以2,加上第四位,令结果为M3,按这种方法一直运算下去,加到最低位为止最后,所得到的结果就是转换的结果,例 2-1-8 将 ( 101101 )二 转换成十进制数,解: M1 = 1 * 2 + 0 = 2,M2 = 2 * 2 + 1 = 5,M3 = 5 * 2 + 1 = 11,M4 = 11 * 2 + 0 = 22,M5 = 22 * 2 + 1 = 45,( 101101 )二 = ( 45 )十,小数的基
7、值反复相除法 设 N 为四位的二进制小数,则 N = d-12-1 + d-22-2 + d-32-3 + d-42-4,= 2-1 d-1 + 2-1 d-2 + 2-1 ( d-3 + 2-1 d-4 ) ,运算步骤从最低位开始,将最低位除以2,加上次低位,令结果为R1R1除以2,加上第三低位,令结果为R2R2除以2,加上第四低位,令结果为R3,一直进行到小数点左边的0为止所得到的十进制小数就是所要求的结果,例 2-1-9 将 N = ( 0.1011 )二转换为十进制小数,解: R1 = ( 1 / 2 ) + 1 = 1.5,R2 = ( 1.5 / 2 ) + 0 = 0.75,R3
8、 = ( 0.75 / 2 ) + 1 = 1.375,N = ( 1.375 / 2 ) + 0 = 0.6875,( 0.1011 )二 = ( 0.6875 )十,例 2-1-10 将 N = ( 632.43 )八转换为十进制小数,解:(1)整数部分,M1 = 6*8 + 3 = 51,N整 = 51*8 + 2 = 410,( 632.43 )八 = ( 410.546875 )十,(2)小数部分,R1 = ( 3 / 8 ) + 4 = 4.375,N小 = ( 4.375 / 8 ) + 0 = 0.546875,将十进制数转换成其它进位制数将十进制数转换成二进制数整数部分的转换
9、小数部分的转换,Example,Example,例2-1-11 求十进制数 43 的二进制表示,解: 除以2 商Qi 余数di,43 / 2 21 d0 = 1,21 / 2 10 d1 = 1,10 / 2 5 d2 = 0,5 / 2 2 d3 = 1,2 / 2 1 d4 = 0,1 / 2 0 d5 = 1,即 (43)十 = (101011)二,例2-1-12 求 ( 0.6875 )十 的二进制小数值,解: 乘以2 得小数Fi 整数di,0.6875*2 0.3750 d-1 = 1,0.3750*2 0.7500 d-2 = 0,0.7500*2 0.5000 d-3 = 1,0
10、.5000*2 0.0000 d-4 = 1,即 (0.6875)十 = (0.1011)二,如果小数Fi永远不为0,怎么办?,例2-1-13 求 ( 0.423 )十 的二进制小数值(精度为 2-5),解: 乘以2 得小数Fi 整数di,0.423*2 0.846 d-1 = 0,0.846*2 0.692 d-2 = 1,0.692*2 0.384 d-3 = 1,0.384*2 0.768 d-4 = 0,即 (0.423)十 = (0.01101)二,0.768*2 0.536 d-5 = 1, ,将十进制转换成其它进位制数例 2-1-14 将 ( 0.6328125 )十 转换成八进
11、制数,解: 乘以8 得小数Fi 整数di,0.6328125*8 0.0625000 d-1 = 5,0.0625000*8 0.5000000 d-2 = 0,0.5000000*8 0.0000000 d-3 = 4,即 (0.6328125)十 = (0.504)八,例2-1-15 将 ( 3952 )十 转换成十六进制数,解: 除以16 商Qi 余数di,3592 / 16 247 d0 = 0,247 / 16 15 d1 = 7,15 / 16 0 d2 = F,即 (3952)十 = (F70)十六,二进制与八进制、十六进制数之间的转换二进制 -八进制,1 101 110 010
12、 . 011 001 01,二进制 十六进制,11 0111 0010 . 0110 0101,真值与机器数真值:用 “+”,“-” 来表示符号“正”、“负”的二进制数机器数:用 “0”,“1” 来表示符号“正”、“负”的二进制数,2.2机器内数据及符号的表示方法,数据编码根据用途不同:原码、补码、反码为了方便人机交互有权码:8421码、2421码、5421码无权码:余3码、格雷码检测能力的数据编码:奇偶校验码、五中取二码纠错能力的数据编码:汉明码、倍数正误码数字、字母、字符编码:ASCII码、EBCDIC码、汉字编码,带符号数与不带符号数,表示范围:0 - 255,表示范围:0 - 127,
13、表示范围:-1 - -127,2.2.1 数的符号与小数点的表示,定点与浮点表示定点数纯小数:小数点固定在符号位之后,如1.1010111,此时机器中所有的数都是小数。纯整数:小数点固定在最低位之后,如11010111.,此时机器中所有的数都是整数。,Sf,S1S2S3S4,符号,数值部分,小数点位置,例 2-2-1,( 329.625 )十,( 54.75 )十,相等?,例 2-2-2 求 329.625D 和 54.75D 之和,解: 329.625D = 101001001.101B 54.75D = 110110.11B,用比例因子23分别乘两数可得:,101001001101.000
14、110110110.,求和: 110000000011.,将求和的结果除以23 : 110000000.011,浮点表示法为什么要用浮点表示法计算机处理的数据不一定是纯小数或者纯整数 如:圆周率 3.1415926有些数据的数之范围相差很大,不能用定点小数或者定点整数表示,但均可用浮点整数表示。 如:电子的质量 9*10-28克,352.47 = 3.5247 * 102 = 3524.7 * 10-1 = 0.35247 * 103 ,数学表示,N = S * rjr :基值 j :r 的指数 S:N 的有效数字,N = 11.0101 = 0.110101 * 210 = 1.10101
15、* 201 = 1101.01 * 2-10 = 0.00110101 * 2100 ,一定要注意:这是二进制的表示方式,基数为2, 有效数字和指数都要用二进制表示,浮点机中数的表示形式,尾数:表示了数的精度,位数越多,精度越高阶值:表示了数的表示范围,位数越多,表示范围越大,机器字长一定,如何提高浮点数的表示精度?,0.000010101,如何用最少的位数表示该数?,规格化,规格化数非规格化数,如果尾数的第一位有效数字是1时,该数即是规格化的数。,例如: 1.1010111 0.1010001,如果尾数的第一位有效数字是0时,该数即是非规格化的数。,例如: 1.001010111 0.001
16、010001,0.1 |S| 1,例2-2-3 将 N1 = 11.0101 表示成浮点数例 2-2-4 将 N2 = 0.00110101 表示成浮点数,解: N1 = 11.0101 = 0.110101 * 210,解: N1 = 0.00110101 = 0.110101 * 2-10,尾数取6位,阶值取3位,阶符和尾符各取1位,定点表示法与浮点表示法的比较数的表示范围假设机器的字长为8位,小数定点机,浮点机,0.0000001 - 0.11111111 / 128 - 127 / 128,0.0001* 2-11 - 0.1111*2+111 / 128 - 7 ( 1 / 2 ),
17、浮点数的表示范围要远远大于定点数的表示范围,数的精度浮点数为规格化数时,它的精度远远大于定点数的精度数的运算定点数 运算速度快浮点数要对尾数和阶码分别进行运算,而且运算结果要求规格化,所以运算步骤较多,运算速度不如定点数快溢出处理定点数,对本身数值进行判断。如小数定点机中的数的绝对值必须小于1,否则为“溢出”浮点数主要对阶码进行判断,下溢:当浮点数阶码小于最小阶码时,称为“下溢”,这 时,溢出的数的绝对值很小,机器按 0 处理。此 时机器可以继续运行上溢:当浮点数阶码大于最大阶码时,称为“上溢”,此 时机器停止运算,进行中断溢出处理。,原码为了表示数的符号,可在数的最高位之前增设一位符号位,符
18、号位为 0 表示正数,符号位为 1 表示负数,这样规定的二进制码,我们称为原码。,例如:(假设机器字长为 8 位),X1 = + 1011010 则 X1原 = 01011010,X2 = - 1011010 则 X2原 = 11011010,2.2.2 原码、补码和反码,整数的原码数学表示 0 , x 0 x 2n-1x原 = 2n-1 x - 2n-1 x 0其中: x 为真值 n 为机器字长,例:2-2-5 假设机器字长为四位,求x的原码,x = + 101,x原 = 0101,x = - 101,x原 = 24-1 ( - 101 ),= 1000 ( - 101 ),= 1101,小
19、数的原码数学表示 x 0 x 1x原 = 1 x -1 x 0其中: x 为真值,例:2-2-6 求x的原码,x = + 0.1010,x原 = 0. 1010,x = - 0.0011,x原 = 1 ( - 0.0011 ),= 1 + 0.0011,= 1.0011,例:2-2-7 已知 x 的原码,求 x 的真值,x原 = 1.0101,x = 1 - x原,= 1 1.0101,= - 0.0101,例:2-2-8 已知 x = 0.0000,求 x原,+ 0.0000原 = 0.0000,- 0.0000原,= 1 (- 0.0000),= 1.0000,在原码表示法中,+ 0.00
20、00 和 0.0000 的值不同,返回,补码,“补”的概念,补码,假设有一个四位的计数器,0000-1111计数,当前值为1011,如何计数到0000,整数的补码数学表示(模2n) x 0 x 2n-1x补 = 2n + x - 2n-1 x 0其中: x 为真值 n 为机器字长,例:2-2-9 求x的补码,假设机器字长为4位,x = + 101,x补 = 0101,x = - 101,x补 = 24 + ( - 101 ),= 10000 - 101,= 1011,小数的补码数学表示(模2) x 0 x 1x补 = 2 + x - 1 x 0其中: x 为真值,例:2-2-10 求x的补码,
21、x = + 0.1001,x补 = 0.1001,x = - 0.0110,x补 = 2 + ( - 0.0110 ),= 10 0.0110,= 1.1010,例2-2-11 x = 0,求 x补, + 0.0000 补 = 0.0000, - 0.0000 补 = 10 0.0000,= 0.0000,原码,返回,在补码的表示方法中,+ 0.0000 和 0.0000 的值相同,反码 x = - 101 假设机器字长为4位,x补 = 24 + ( - 101 ),= 10000 + ( - 101 ),= 1011,24 = 10000 = 1111 + 0001,x补 = 24 + x
22、= 1111 + 0001 - x1 x2 x3,整数的反码数学表示(模2n - 20) x 0 x 2n-1x反 = ( 2n 20 ) + x - 2n-1 x 0其中: x 为真值 n 为机器字长,例:2-2-12 求x的反码,假设机器字长为4位,x = + 101,x反 = 0101,x = - 101,x反 = ( 24 - 20 ) + ( - 101 ),= 10000 - 0001 - 101,= 1010,小数的反码数学表示(模2 2-n+1) x 0 x 1x反 = ( 2 2-n+1 ) + x - 1 x 0其中: x 为真值 n 为机器字长,例:2-2-13 求x的反
23、码,x = + 0.0110,x反 = 0.0110,x = - 0.1011,x反 = ( 2 2-4 ) + ( - 0.1011 ),= 2 0.0001 0.1011,= 1.0100,例2-2-14 x = 0,求 x反, + 0.0000 反 = 0.0000, - 0.0000 反 = 10.0000 0.0001 0.0000,= 1.1111,原码,补码,在反码的表示方法中,+ 0.0000 和 0.0000 的值不相同,小结机器数的最高位是符号位,0为正,1为负正数x,其原码、补码、反码的表示形式相同负数xx原:符号位为1,数值部分与真值绝对值相同x补:符号位为1,数值部分
24、为将真值尾数逐位求反,最低位加1x反:符号位为1,尾数部分为将真值的尾数按位取反,例 2-2-15 已知 x = +13/128,试用二进制表示成定点数和浮点数(数值部分取8位,阶码部分取3位,阶符、数符各取1位),并写出它在定点机和浮点机中的机器数形式,解:(1) x = 8/128 + 4/128 + 1/128 = 2-4 + 2-5 + 2-7 = 0.0001101,(2) 定点数表示为: x = 0.00011010 浮点数表示为: x = 0.11010000 * 2-11,定点机中的机器数: x原 = x补 = x反,(4) 浮点机中的机器数:,x原:,x补:,x反:,例 2-
25、2-16 已知 x = - 17/64,试用二进制表示成定点数和浮点数(数值部分取8位,阶码部分取3位,阶符、数符各取1位),并写出它在定点机和浮点机中的机器数形式,解:(1) x = - ( 16/64 + 1/64) = - ( 2-2 + 2-6 ) = - 0.0100010,(2) 定点数表示为: x = - 0.01000100 浮点数表示为: x = 0.10001000 * 2-1,定点机中的机器数:,x原:,x补:,x反:,(4) 浮点机中的机器数:,x原:,x补:,x反:,2.2.3 信息的编码方法,BCD码 (Binary Coded Decimal)二进制表示的十进制数
26、编码常用的BCD码为8421BCD码(每位十进制数用四位二进制数表示)3 4 转换为BCD码为:0011 01009 0 转换为BCD码为:1001 0000BCD码的种类非压缩型的BCD码 每个十进制数用一个字节表示,只有低四位的值表示数值,3 4 表示为:0011 0011 0011 0100 9 0 表示为:0011 1001 0011 0000压缩型的BCD码 一个字节存放两个十进制的数位BCD码的用途可以表示数,并在计算机内直接参加运算BCD码可以在数的转换过程中,做中间表示,奇偶校验码作用:为了防止信息在存储及传输过程中发生错误而设置的附加码编码种类:奇校验:“1” 的个数为奇数
27、0101 10101偶校验:“1” 的个数为偶数 0101 0101,ASCII码目的:为了表示、传输打字机或键盘上面的所有符号表示128各符号,包括数字、英文字母(大写和小写)、34个专用字符和32个通用控制字符。非压缩型的编码最高位增加一位校验位,ASCII码表,2.3 微型计算机的数据类型,字符型数据单字整数双字整数短实数长实数,2.3.1 带符号数与不带符号数 的区别,数的表示上,最高位为符号位,“0”代表正数,“1”代表负数例: 1 0 1 1 0 1 0 1无符号数: 1*27 + 1*25 + 1*24 + 1*22 + 1*20 = 128 + 32 + 16 + 4 + 1
28、= 181有符号数:1 0 1 1 0 1 0 1 = - 0 1 0 0 1 0 1 1 = - 75,整数类型数的表示范围,2.3.2 整数表示,字符型整数,7 6 0,单 字 整 数,15 14 0,双 字 整 数,31 30 0,2.3.3 实数表示,短实数,31 30 22 0,长实数,63 62 51 0,8位,11位,十进制数的表示,见BCD码,2.4 数的运算方法,数的运算的种类算术运算逻辑运算 与、或、非、异或,2.4.1 数的逻辑运算,逻辑非(求反)NOT国标符号运算规则例 x = 10110101,y = 01100010,求其非 NOT x = 01001010 NOT
29、 y = 10011101,A,A,逻辑加OR国标符号运算规则例 x = 10110101 y = 01100010 求x OR y 解: x OR y = 10110101 OR 01100010 = 11110111,逻辑乘AND国标符号运算规则例 x = 10110101 y = 01100010 求x AND y 解: x AND y = 10110101 AND 01100010 = 00100000,逻辑异或(按位加)国标符号运算规则例 x = 10110101,y = 01100010 求 x XOR y 解:x XOR y = 10110101 XOR 01100010 = 1
30、1010111,2.4.2 数的算术运算,定点加减运算及溢出判断定点加减运算计算机中,数的加减运算是通过补码来完成的x补 + y补 = x+y补 成立 详细的证明过程,见书36页,例 2-4-1 A = 0.1011 B = -0.0101,求A+B补,解: A补 = 0.1011 B补 = 1.1011,例:2-4-2 A = -0.1001 B = -0.0101,求A+B补,解:A补 = 1.0111 B补 = 1.1011,A+B补 = 1.0010,单符号位的溢出判断两个符号相反的数相加不会产生溢出符号位相同时,相加结果得到相反的符号,则溢出。,双符号位的加减运算,解:A补 = 11
31、.0101 B补 = 11.1001,例 2-4-3 已知 A = - 11/16 B = - 7/16, 求A+B补,解:A补 = 00.1011 B补 = 00.0111,例 2-4-4 已知 A = 11/16 B = 7/16, 求A+B补,补码定点加减法的硬件配置,0 A n,加法器(n+1位),0 X n,GA,Gs,定点乘除运算原码一位乘法分析笔算乘法,例 设A=0.1101 B=0.1011,求 A*B,将四个位积一次相加,机器难以实现,乘积的位数增长了一倍,造成器件的浪费和运算时间的增加,笔算乘法的改进,A * B = A * 0 . 1 0 1 1,= 0 . 1 * A
32、+ 0 . 0 0 * A + 0 . 0 0 1 * A + 0 . 0 0 0 1 * A,= 0 . 1 * A + 0 . 0 0 * A + 0 . 0 0 1 * ( A + 0 . 1 * A ),= 0 . 1 * A + 0 . 0 1 * 0 * A + 0 . 1 * ( A + 0 . 1 * A ) ,= 0 . 1 * A + 0 . 1 * 0 * A + 0 . 1 * ( A + 0 . 1 * A ) ,= 2-1 * A + 2-1 * 0 * A + 2-1 * ( A + 2-1 * ( A + 0 ) ) ,将乘法转换为四次加法和四次移位操作,笔算乘
33、法改进的运算步骤,A * B,= 2-1 * A + 2-1 * 0 * A + 2-1 * ( A + 2-1 * ( A + 0 ) ) ,数学表示 x原 = x0 . x1 x2 x3 xn y原 = y0 . y1 y2 y3 yn x原 * y原 = x0 y0 ( 0 . x1 x2 xn )* ( 0 . y1 y2 yn ) ( 0 . x1 x2 xn )记作 x* ( 0 . y1 y2 yn )记作 y* 递推公式:z0 = 0 zi = 2-1 ( yn-i+1 * x* + zi-1 )z1 = 2-1 ( yn * x* + z0 ) z2 = 2-1 ( yn-1
34、 * x* + z1 ) zn = 2-1 ( y1 * x* + zn-1 ) ,被乘数A=0.1101 乘数B=0.1011,原码一位乘所需的硬件配置,0 X n,原码一位除法分析笔算除法,0,0,设 x = - 0 . 1 0 1 1 y = 0 . 1 1 0 1,数学表示 x原 = x0 . x1 x2 x3 xn y原 = y0 . y1 y2 y3 yn x原 / y原 = x0 y0 ( 0 . x1 x2 xn ) / ( 0 . y1 y2 yn ) ( 0 . x1 x2 xn )记作 x* ( 0 . y1 y2 yn )记作 y* 约束: 0 0时,上商“1”,再对R
35、i左移一位后减除数,即做2Ri Y*的运算;当余数Ri 0时,上商“0”,然后做Ri + Y*即恢复余数的运算;加减交替法当余数Ri 0时,上商“1”,做2Ri Y*的运算;当余数Ri 0时,上商“0”,做2Ri + Y*的运算;,恢复余数法示例,加减交替法示例,例 已知 x = - 0 . 1 0 1 1 , y = - 0 . 1 1 0 1 求 x / y 原解: x0 = 1 x* = 0 . 1 0 1 1 x 原 = 1 . 1 0 1 1 y0 = 1 y* = 0 . 1 1 0 1 y 原 = 1 . 1 1 0 1 - y* 补 = 1 . 0 0 1 1,返 回,例 已知 x = - 0 . 1 0 1 1 , y = 0 . 1 1 0 1 求 x / y 原解: x0 = 1 x* = 0 . 1 0 1 1 x 原 = 1 . 1 0 1 1 y0 = 0 y* = 0 . 1 1 0 1 y 原 = 0 . 1 1 0 1 - y* 补 = 1 . 0 0 1 1,原码加减交替法所需的硬件配置,0 X n,习题,习题 3:数制转换习题11:写出下列各数的原码、补码和反码习题17:将十进制数表示成二进制浮点规格化数,
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。