《孙旭飞微机运算基础》由会员分享,可在线阅读,更多相关《孙旭飞微机运算基础(28页珍藏版)》请在金锄头文库上搜索。
1、第2 章 数据表示和运算方法,本章学习要点: 数据在计算机内的表示 算术运算规则 逻辑运算规则 定点数加、减法的实现,1. 定点数 所谓定点,即约定机器中所有数据的小数点位置是固定不变的。在计算机中通常采用两种简单的约定: 将小数点的位置固定在数据的最高位之前,称为定点小数;若固定在最低位之后,则称为为定点整数。 则在计算机中的表示形式为:,2.1.1 定点数与浮点数, 2.1 数值数据在计算机内的表示,符号位 小数点位置 数 值 部 分,1. 定点数 定点整数是纯整数,约定的小数点位置在有效数值部分最低位之后。若数据x的形式为 x = x0x1x2xn 其中,x0为符号位,x1x2xn是尾数
2、,xn为最低有效位。 则在计算机中的表示形式为:,2.1.1 定点数与浮点数,符号位 数 值 部 分 小数点位置,数值数据在计算机内的表示,2. 浮点数 与科学计数法相似,任意一个J进制数N,总可以写成: N = M JE 式中,M称为数N的尾数(mantissa),是一个纯小数;E为数N的阶码(exponent),是一个整数;J称为比例因子JE的底数。这种表示方法相当于数的小数点位置随比例因子的不同而在一定范围内可以自由浮动,所以称为浮点表示法。 例如: 1265的十进制数的浮点表示为:1.265 103,2.1.1 定点数与浮点数,数值数据在计算机内的表示,2. 浮点数 例如,二进制数 0
3、.10111012+100(等于十进制数11.625),其浮点数可表示如下: 可见,浮点表示与定点表示比较,只多了一个阶码部分。,2.1.1 定点数与浮点数,浮点数的规格化:即当尾数的值不为0 时,其绝对值应大于等于0.5,即尾数域的最高有效位应为1。,数值数据在计算机内的表示,2.1.2 数的机器码表示,把二进制数的最高一位定义为符号位,符号位为0表示正数,符号位为1表示负数,这种连同符号位一起数值化了的数,称为机器数。机器数所表示的真实的数值,称为真值。,7 6 5 4 3 2 1 0,假设机器字长为16位,符号位 数值位,15 14 13 12 11 10 9 8 7 6 5 4 3 2
4、 1 0,假设机器字长为8位,数值数据在计算机内的表示,2.1.2 数的机器码表示,对于符号数,机器数常用的表示方法有原码、反码和补码三种。数X的原码记作X原,反码记作X反,补码记作X补。 最高位表示符号,数值位用二进制绝对值表示的方法,称为原码表示法。,数值数据在计算机内的表示,例如: x真值 = ( +105 )10 = ( +1101001 )2,则 x原 = 01101001;,2.1.2 数的机器码表示,一个负数的原码符号位保持不变,其余位取反就是机器数的反码表示法。正数的反码与原码相同。 例如: x真值 = ( -105 )10 = ( -1101001 )2,则 x反 = 100
5、10110。 将负数的反码加1,则得到机器数的补码表示。正数的补码与原码相同。 例如: x真值 = ( -105 )10 = ( -1101001 )2,则 x补 = 10010111。,数值数据在计算机内的表示,2.1.2 数的机器码表示,补码的加法: 例如: x真值 = ( +105 )10 ,则 x 补 = 01101001 y真值 = ( -105 )10 ,则 y补 = 10010111。 x 补 + y补 = 0 例如: x真值 = ( +107 )10 ,则 x 补 = 01101011 y真值 = ( -105 )10 ,则 y补 = 10010111。 x 补 + y补 =
6、00000010 例如: x真值 = ( +105 )10 ,则 x 补 = 01101001 y真值 = ( -113 )10 ,则 y补 = 10001111。 x 补 + y补 = 111110000,数值数据在计算机内的表示,可见采用补码,可以将减法用加法实现,对加减运算十分方便,而且省去减法器,因此目前机器中广泛采用补码表示法。在这类机器中,数用补码表示,补码存储,补码运算。也有些机器,数用原码进行存储和传送,运算时改用补码。还有些机器在做加减法时用补码运算,在做乘法时用原码运算。,2.1.2 数的机器码表示,数值数据在计算机内的表示,11011010 1 11011011, 010
7、00100,01000100B - 00100101B,00011111,计算机中实现过程,68 37 = 31,在计算机中还有一种中间数字编码形式,它的每一位十进制数用4位二进制编码表示,称为二进制编码的十进制表示形式,简称BCD码(Binary Coded Decimal),又称为二十进制数。 使用4位二进制数码,可编码组合成16种不同的状态,而十进制数只有0,1,9这十个数码,因此选择其中的十种状态作为BCD码的方案有许多种,如8421 BCD码、格雷码、余3码等,见下表。,2.1.3 BCD码,数值数据在计算机内的表示,2.1.3 BCD码,常用BCD码编码表,数值数据在计算机内的表示
8、,2.2.1 字符的表示方法,字符主要指数字、字母、通用符号、控制符号等,在机内它们都被变换成计算机能够识别的二进制编码形式。这些字符编码方式有很多种,国际上广泛采用的是美国国家信息交换标准代码(American Standard Code for Information Interchange),简称ASCII码,见下表。, 2.2 非数值数据在计算机内的表示,2.2.1 字符的表示方法,非数值数据在计算机内的表示,2.2.2 汉字的表示方法,用计算机进行汉字信息处理,首先必须将汉字代码化,即对汉字进行编码,称为汉字输入码。汉字输入码送入计算机后,还必须转换成汉字内部码,才能进行信息处理。处
9、理完毕之后,再把汉字内部码转换成汉字字形码,才能在显示器或打印机输出。因此汉字的编码有输入码、内码、字形码三种。,非数值数据在计算机内的表示,汉字字型编码,是用来描述汉字字形的代码,它是汉字的输出形式。汉字库有点阵字库、TrueType字库、矢量字库等类型。,非数值数据在计算机内的表示,2.3.1 加、减、乘、除运算规则, 2.3 算术运算,1. 二进制加法 运算规则是: 0 + 0 = 0 (进位 = 0) 0 + 1 = 1 (进位 = 0) 1 + 0 = 1 (进位 = 0) 1 + 1 = 0 (进位 = 1) 1 + 1 + 1 = 1(进位 = 1) 结果是通过逻辑“异或” 得到
10、。 进位是通过逻辑“与”得到。,2.3.1 加、减、乘、除运算规则, 2.3 算术运算,3.二进制乘法 运算规则是: 0 0 = 0 (逻辑与) 0 1 = 0 (逻辑与) 1 0 = 0 (逻辑与) 1 1 = 1 (逻辑与),例:计算1111与1101的乘积。 解: 1111 1101 1111 0000 1111 1111 11000011,2.3.1 加、减、乘、除运算规则, 2.3 算术运算,3.二进制除法 例:计算100011与101的商。 解: 000111 101 100011 101 111 101 101 101 0, 2.3 算术运算,2.3.2 补码加减运算,略,2.3
11、.3 溢出概念及检测方法,在计算机中,若采用定点小数,数的表示范围为|x| 1,如果出现运算结果超出数的表示范围的现象,就称为溢出。在采用定点整数的情况下,由于机器字长一定,所以能表示的数据范围也是有限的,仍存在溢出问题。 例如,当字长为8位的二进制数用补码表示时,其范围为-27+27-1,即-128+127。如果运算结果超出此范围,就会产生溢出。 产生溢出会丢失有效数字,结果将是错误的,因此,必须解决溢出的判断问题,当计算过程中出现溢出时,能及时处理。,算术运算,2.3.3 溢出概念及检测方法,例:x= - 1111110,y = - 0000010,求x补 + y补。 解: x 补 = 1
12、000 0001, y补 = 1111 1110 x 补 1000 0001 y 补 1111 1110 x+y 补 10111 1111 丢掉 两个负数相加的结果却为正数,这显然是错误的。转化成十进制来理解就是-127+(-2)应等于-129,运算结果却是+127,这是因为-129超出了表示范围(-128)。,算术运算,例:计算:15 +112,注意:令Cs为数值部分向符号位的进位,Cs+1为符号 位相加产生的进位,此例中,Cs = Cs+1 = 0,结 果在位二进制补码表示范围内,没有溢出。,算术运算,例:计算:-118 + 121,注意:此例中,Cs = Cs+1 = 1,结果正确,没有
13、溢出。,算术运算,例:计算:126 + 5,算术运算,注意:此例中,Cs Cs+1,产生了错误的结果, 发生了溢出。,例:计算:-124 - 8,注意:此例中,Cs Cs+1,同样结果是错误的, 即发生了溢出。,算术运算,结论: 在前两例中,运算结果正确,没有产生溢出,它们的共同规律是Cs = Cs+1 ;在后两例中,运算结果都超出了8位二制数表示的范围,分别产生了正溢出和负溢出,因此得到的是错误的结果,它们的共同点是CsCs+1。 综合这四例的情况,可用下述逻辑表达式作为溢出判断的依据: 溢出 = CsCs+1,算术运算,2.5 多功能算术逻辑运算单元(ALU),2.4 逻辑运算,74181 ALU的逻辑电路图,