




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 二、进位制数之间的转换 1、二进制数转换成十进制数 根据二进制数的定义,只要将它按权展开再相加。 例如:(111.101)2=122 +1 21 +1 20 + 1 2-1 + 0 2-2 + 1 2-3 = (7.625)10 2、十进制数转换成二进制数 整数部分,采用除2取余法(或倒除法) 例如:将(215)10转换成二进制数 2 215 余数 2 107 1 2 53 1 2 26 1 2 13 0 2 6 1 2 3 0 2 1 1 0 1 结果 (215)10 = (11010111)2 或写为:215D = 11010111B 小数部分,采用乘2取整法 例如:将(0.6875)1
2、0转换成二进制数 0.6875 取整数部分 2 1.3750 1 0.3750 2 0.7500 0 2 1.5000 1 0.5000 2 1.0000 1 0.0000 结果 (0.6875)10 = (0.1011)2 如果十进制小数不能用有限位的二进制数表示,则根据精度取几位 例如:(0.414)10 (0.01101)2 (取5位) 或写为: 0.414D 0.01101B(取5位)3、八进制数转换成十进制数 根据八进制数的定义,只要将它按权展开再相加。 例如:(14)8= 181 +4 80= (12) 10 或写为:14Q= 181 +4 80= 12D = 124、十六进制数转
3、换成十进制数 根据十六进制数的定义,只要将它按权展开再相加。 例如:(A4)16= 10161 +4 160= (164) 10 或写为:A4H = 10161 +4 160= 164D = 164 5、十进制数转换成八进制数 与十进制数转换成二进制数相似,采用除8取余法(整数)和乘8取整法(小数)。 6、十进制数转换成十六进制数 与十进制数转换成二进制数相似,采用除16取余法(整数)和乘16取整法(小数)。 例如:将(843.6875)10转换为十六进制数 16 843 取余数 0.6875 取整数 16 52 B 16 16 3 4 4.1250 0 3 6.875 B.0000 B结果
4、(843.6875)10 = (34B.B)16 通常,先将十进制数转换成二进制数,再由二进制数转换成8进或16进制数。 7、八进制数与二进制数之间的转换 一位八进制数相当于3位二进制数,所以八进制数转换成二进制数,或二进制数转换成八进制数很方便。 例如:(563)8 = (101,110,011)2 (0.764)8= (0.111,110,100)2 8、十六进制数与二进制数之间的转换 一位十六进制数相当于4位二进制数,所以十六进制数与二进制数之间的转换是很方便的。 例如:(3AB)16 = (0011,1010,1011)2 (0.CD3)16 = (0.1100,1101,0011)2
5、 三、二进制编码 1、二进制编码的十进制数(BCD码) BCD码是用4 位二进制数码来表示一位十进制数字。通常采用8421码。十进制数8421码2421码余3码0000000000011100010001010020010001001013001100110110401000100011150101101110006011011001001701111101101081000111010119100111111100 例如:(117.574)10= (1110101.1001)2(小数后取4位) = (1,0001,0111.0101,0111,0100)BCD2、字母与字符的编码 微机中普遍
6、采用ASCII码,用7位二进制数来表示。3、汉字的编码 汉字的输入编码 直接用西文键盘输入汉字,通常采用以下三类: 数字编码 常用的是国标区位码,用数字串代表一个汉字输入, 以国家颁布的两级汉字为例。6763个两级汉字分为94个区,每个区分94位,例如“中”字位于第54区48位,则他的区位码是5448。 GB2312分成94行94列,行号称为区号,列号称为位号。7位区号在左, 7位列号在右,共14位,这是汉字的区位码。将区位码的区号和位号各加32(即100000)变换成国标码。 区位码是: 0010011 0000011 (13H 03H) 其国标码则为: 0110011 0100011 (3
7、3H 23H) “中”的区位码是5448 即36H 30H,国标码是56H 50H。 拼音码,输入简单,但输入重码率很高。 字形编码 通常是五笔字形编码。 现在汉字输入的研究很多,输入的方法有几十种。 汉字内码 汉字内码用于汉字的存储、交换、检索等操作的机内代码,一般采用两个字节表示。 例如:将汉字的国标码的区号和位号扩展成8位(即 四、二进制数的运算(一)二进制数的算术运算1、加减法规则: 0+0= 0 , 0+1=1, 1+0 =1 ,1+1= 0(进位1) 0-0= 0 , 1-0 =1 ,1-1= 0 ,0-1=1 (有借位)例: 11000100 11000100 +00100101
8、 - 00100101 11101001 100111112、乘法 1111规则:00=0,0 1=0,1 0=0,1 1=1 1101被乘数左移法 1111 1111 1101 0000 = 11000011 1111 1111 11000011 部分积右移法 乘 数 被 乘 数 部分积 1101 1111 0000乘数最低位为1,加被乘数 1111 部分积右移 0111 1乘数次低位为0,不加被乘数 0011 11 部分积右移 1111乘数第2位为1,加被乘数 10010 11 部分积右移 1001 011乘数第1位为1,加被乘数 1111 部分积右移 11000 011 只需要4位加法器
9、 1100 0011(结果) 3、除法 例:1001111110 1101 余1 0001101 110 1001111 110 111 110 111 110 1 (二)二进制数的逻辑运算 1、“与”运算 表达式: Y=AB,Y=AB ,Y=AB 规则: 0 0 = 0 0 1 = 0 1 0 = 0 1 1 =1 2、“或”运算 表达式: Y=A+B,Y=AB 规则: 0 +0 = 0 0 +1 = 1 1 +0 = 1 1 +1 =1 3、“非”运算 Y= A 0 = 1 1 = 0 4、“异或”运算 表达式:Y=A B 规则:0 0 = 0 0 1 = 1 1 1 = 0 1 0 =
10、1 与、或、非是三种基本运算,其他逻辑运算都可由这三种运算组合而成。 如:异或运算 同或运算 Y=A B = BABABAYBABABA五、带符号数表示法 计算机中带符号的二进制数有四种编码方法:原码、反码、补码和移码 1、原码 机器数与真值 一个数的符号位和数值位一起表示的二进制编码称为机器数,机器数编码方法不同分为原码、反码、补码和移码;而该机器数的十进制数值称为该数的真值。 无符号二进制数的每一位都是数值位。例如:8位无符号二进制数00000000至11111111,其数值范围为0 255。 8位有符号数的最高位表示符号,0表示正数,1表示负数,其余7位是数值位,其原码表示范围为-127
11、 - +127例如:(01011011)2= +91 (11011011)2= -91这里(11011011)2称为原码机器数, -91称为该机器数的 真值 原码 若定点小数的原码形式为x0 . x1x2xn,则原码定义是: x 1 x 0 x原= 1-x = 1+ x 0 x -1 式中x原是机器数,用带符号二进制数编码表示;x 是带+或-符号的一般二进制数表示,它的十进制数值称为真值。 例如:x = +0.1001B,则x原= 0.1001B, x的真值= +0.5625 x = - 0.1001B,则x原= 1.1001B, x的真值= - 0.5625 若定点整数的原码形式为x0 x1
12、x2xn,则原码定义是: x 2n x 0 x原= 2n x = 2n + x 0 x - 2n 0的原码(8位) +0原= 00000000 ; -0原= 10000000 原码表示简单易懂,由原码求真值很容易,但运算复杂。2、反码 所谓反码就是二进制数各位数码0变为1,1变为0,通常称为取反,用上横线表示。如x=0,则 x =1。 定点小数反码的定义 x 1 x 0 x反= (2 2-n)+ x 0 x -1 定点整数反码的定义 x 2n x 0 x反= ( 2n+1 1 )+ x 0 x - 2n 正数的反码与原码相同例如: +105原= 01101001 +105反= 01101001
13、 负数的反码 :该负数的原码按位(除符号位外) 取反例如: x= -1101001B= -105 -105原 = 11101001 -105反= ( 28 1 )+ x =11111111 - 1101001 = 10010110 0的反码 +0原= 00000000 +0反= 00000000 - 0原= 10000000 - 0反= 11111111 3、补码 定点小数补码的定义 定点小数补码形式为x0 . x1x2xn,则补码定义如下: x 1 x 0 x补= (mod 2) 2 + x = 2 - x 0 x -1 定点整数补码的定义 定点整数补码形式为x0 x1x2xn,则补码定义如
14、下: x 2n x 0 x补= (mod 2n+1 ) 2n+1 + x = 2n+1 - x 0 x - 2n 正数的补码与原码相同 例如:+4补= +4反 = +4原 = 00000100 +127补= +127反 = +127原 = 01111111 负数的补码为该负数的原码按位(除符号位外)取反后再在最低位加1;或者为该负数对应的反码,在最低位加1 例如:x = - 4 = - 0000100B (n=7) - 4原 = 10000100 - 4反 = 11111011 - 4补 = 11111100 - 4补 = 27+1 +( 0000100 )= 28 0000100 = 111
15、11100 0的补码: +0补= +0反= +0原= 00000000 - 0补= - 0反+1=11111111+1= 00000000 +0补= - 0补= 00000000 -128的补码: - 128补= 10000000 已知一个数的机器数,求其真值 要看机器数用哪一种编码表示,若是原码,则求真值简单,直接按权展开相加即得;若是反码或补码,则先求该数的原码。例1:已知 x补= 11111100,求x的真值 先求x的原码,如果x是正数,原码与补码相同;如果x是负数,则将该数的补码按位(除符号位)取反后,在最低位加1。 x原= 10000100,x = - 4例2: x补= 100101
16、00 则 x原= 11101011+1=11101100 x = -(126+ 125+ 024+ 123+ 122+ 021+ 020) = - (64+32+0+8+4+0+0)= - 108 补码运算 正数补码运算 与原码运算相同 负数补码运算 用补码可以将二进制数的减法运算转换为加法运算。 X+Y补 = X补 + Y补 X - Y补 =X补 +-Y补= X补 - Y补 补码的减法运算,可以归纳为:先求X补 、再求-Y补 ,然后进行补码的加法运算。 补码加减法的结果仍然是补码,要得到结果的真值,必须求它对应的原码,再按定义展开相加。 已知Y补,求-Y补 -Y补= Y补补,包括符号位在内的
17、所有位取反,再在最低位加1。 例如,已知Y补=+4补= 00000100,Y= +4 则 -Y补= - 4补=Y补补= +4补补=11111100例1:求64 10 ,用补码做 解:设 z = 64 10 = 64+(- 10) +64补=01000000 ,- 10原= 10001010 - 10补= 11110110,或 10补补=00001010补=11110110 z补= 64-10补=+64补+ - 10补= 01000000 +11110110 = 00110110 结果为正数,所以 z = +54例2:求34 68 解:设 z = 34 68 = 34+(- 68) +34补=0
18、0100010 , - 68原= 11000100 - 68补= 10111100 z补=+34补+ - 68补=00100010 +10111100 = 11011110 结果为负数,z原= 10100010 ,z = - 34(9)n位二进制数的补码表N 位二进制补码数表 十进制数 二进制数 16 进制数 十进制数 16 进制数 N8 N16 127 01111111 7F 32767 7FFF 126 01111110 7E 32766 7FFE 1 00000001 01 1 0001 0 00000000 00 0 0000 1 11111111 FF 1 FFFF 2 111111
19、10 FE 2 FFFE 126 10000010 82 32766 8002 127 10000001 81 32767 8001 128 10000000 80 32768 8000 (10) 8位二进制数(包括符号位1位,有效 数值7位)表示的范围 原码:01111111 11111111 +127 -127 反码:01111111 10000000 +127 -127 补码:01111111 10000000 +127 -128 -127反=10000000,-127补=10000001 -128补=10000000 (11) 溢出概念和检测方法 溢出概念 各种数据编码都有其数据表示范
20、围,如果在运算过程中出现的数据超出这个表示的范围,称为溢出。 如8位二进制数原码表示的范围是-127到+127;8位二进制数补码表示的范围是-128到+127等。 对于加法,只有在正数加正数和负数加负数两种情况才会产生溢出,即符号相同的两个数相加可能会溢出的;而符号不同的两个数相加是不会溢出的。 对于减法,只有在正数减负数和负数减正数两种情况才会产生溢出,即符号不同的两个数相减可能会溢出的;而符号相同的两个数相减是不会溢出。 溢出检测方法通常有三种: 、根据参加运算的两个数和结果的符号位来判断: 两个符号位相同的补码相加,如果和的符号位与加数的符号相反,则表明运算结果溢出。 两个符号位相反的补
21、码相减,如果差的符号位与被减数的符号位相反,则表明运算结果溢出。 例1:x= -0.1101, y= -0.1011 求x+y补 解: x补=1.0011 y补=1.0101 x+y补=x补+y补=1.0011+1.0101=10.1000 x+y补= 0.1000 即两个负数相加,结果是正数,所以溢出 若加法运算的两个数为X、Y,结果为Z,他们的符号位分别是x0、y0、z0,则溢出判断的逻辑真值表如下: 根据真值表,可得判断溢出的逻辑表达式: 000000zyxzyxV这种溢出判断方法不仅 X0 Y0 Z0 V需要判断加法运算的结 0 0 0 0果,而且需要保持原操 0 0 1 1作数,比较
22、麻烦。 0 1 0 0表中,V=1的两行是溢 0 1 1 0出行。 1 0 0 0 同理,可写出减法的 1 0 1 0溢出真值表和逻辑表达 1 1 0 1式 如下: 1 1 1 0 两个符号位相反的补码相减,如果差的符号位与被减数的符号位相反,则表明运算结果溢溢,表中v=1是溢出行。 这里x0是被减数的符号位;y0是减数的符号位;z0是差的符号位。 x0 y0 z0 v 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1 0000000zyxzyxV 、第二种方法是 采用双符号位法: 每个数的最高两位作为符号位,正常时,两
23、个符号位应相同,如正数为00,负数为11。若运算结果两个符号位不同,表示发生了溢出。若结果符号位是01,表示结果大于数范围的上线,称为上溢;若结果符号位是10,表示结果小于数范围的下线,称为下溢。 例2:x= -1100B y= -1000B,求x+y 解:x补=110100,y补=111000(数前加两位符号位) x+y补= x补+ y补= 110100+111000=101100 符号位为10,表示下溢,即负溢出 、第三种方法是简单判别法: 利用数据编码的最高位(符号位)和次高位(数值部分的最高位)的进位状况来判断运算结果是否溢出。 两个补码数据实现加减运算时,若最高数值位向符号 位的进位
24、值与符号位产生的进位输出值不相同,则表示 加减(减法也用补码加法做)运算产生了溢出。即 这里,C0是两个符号位和最高数值位的进位C1相加产生的进位,C1是最高数值位相加的进位。V=1,表示溢出。 例3:设x = +1011B,y = +1001B,求x+y补: 解: x补= 01011, y补= 01001 x+y补= x补+ y补= 01011+01001=10100 C1 = 1, C0 = 0 ,V = C0 C1 = 1 所以V= 1,结果溢出。这里,两个正数相加,和的符号位为负数,也可判断是溢出。 101010CCCCCCV4、移码 若定点整数移码形式为x0 x1x2xn时,移码的定
25、义为: x移=2n + x 2n x - 2n 式中x移为机器数,x的十进制数值为真值 例1:x = -1010011B ,则 x = - 83 x原= 11010011 x补= 10101101 x移= 00101101 x移= 27+x = 27 - 1010011= 10000000 + 10101101 = 00101101 在带符号的移码中,最高位仍是符号位,但1表示正号,0表示负号。 将移码与补码比较,可以发现只是符号位不同,其余位相同。 例2: 设x= +1010B,y= -1010B 求x、y的移码 解:x移=10000 + 1010 = 11010 ( n = 4 ) y移=
26、10000 1010 = 00110 或 x补=01010, y补=10110 x移=10000 + 01010=11010 y移=10000 + 10110=00110 例3:零的移码(8位) +0移= -0移= 100000005、四种编码的表示 四种编码的数的表示法 二进制数 无符 号数 原码 补码 移码 反码 0 0 0 0 0 0 0 0 0 0 0 - 1 2 8 0 0 0 0 0 0 0 0 1 1 1 1 - 1 2 7 1 0 0 0 0 0 0 1 0 2 2 2 - 1 2 6 2 0 1 1 1 1 1 1 0 1 2 6 1 2 6 1 2 6 - 2 1 2 6
27、0 1 1 1 1 1 1 1 1 2 7 1 2 7 1 2 7 - 1 1 2 7 1 0 0 0 0 0 0 0 1 2 8 0 1 2 8 0 1 2 7 1 0 0 0 0 0 0 1 1 2 9 1 1 2 7 + 1 1 2 6 1 0 0 0 0 0 1 0 1 3 0 2 1 2 6 + 2 1 2 5 1 1 1 1 1 1 0 1 2 5 3 1 2 5 3 + 1 2 5 2 1 1 1 1 1 1 1 0 2 5 4 1 2 6 2 + 1 2 6 1 1 1 1 1 1 1 1 1 2 5 5 1 2 7 1 + 1 2 7 0 六、定点数和浮点数1、定点数:数据的
28、小数点位置是固定不变的,定点整数的小数点定在最低位的右边(纯整数);定点小数的小数点定在最高位的左边(纯小数)。 设任意定点数x = x0 x1 x2 xn,在定点机中可表示为如下形式: 符号 尾数 如果x是纯小数,则小数点位置在x0和x1之间,此时数的表示范围为: 0 x 1 - 2-n x0 x1 x2 xn-1xn 如果x表示的是纯整数,则小数点在最低位xn的右边,此时数的表示范围位: 0 x 2n - 12、浮点数:小数点的位置可以浮动的数称为浮点数。浮点数的一般表示如下: N=(-1)S MRE 其中M是浮点数N的尾数,而R是基数,E是阶码,S为数据的符号位。计算机内浮点数的基数通常
29、是2。M用定点小数表示,决定了浮点数的精度。规定尾数用纯小数形式给出,并采用规格化的表示方法。E是带符号的定点数,一个浮点数可以表示如下:符号S阶码E尾数M 阶码E通常用整型数表示,它决定了该浮点数的表示范围,阶码一般用补码或移码表示,尾数可用原码或补码表示。例1:N1= 1011011.101011= 20111 0.1011011101011 浮点数格式为 0,0111,1011011101011 N2= 0.0000110101=2-100 0.110101= 21100 0.110101 浮点数格式为 0,1100,110101 N3= -1010100.1001= 20111 1.1
30、0101001001 浮点数格式为 1,0111,10101001001(尾数原码表示) 浮点数格式为 1,0111,01010110111(尾数补码表示) 浮点数通常也采用双符号位来表示,这时阶码的符号位和尾数的符号位均为两位,书写格式如下: 例2:x = 2-0111 0.11011011 ,y = 20101(- 0.10110111),采用双符号位和补码表示。 x浮 = 11,1001,00.11011011 y浮 = 00,0101,11.01001001 阶符 阶码 ,尾符 尾数 浮点数的规格化数值表示法: 例如:-3.5 = -11.1B= -0.111B 22 1011B =
31、0.1011B 24 -0.3125 = - 0.0101B = -0.101B 2-1 浮点数的运算 加减法:要先对阶,总是使小阶向大阶对齐例3: N1=2011 0.1001 N2=2001 0.1100 解:对阶:N2=2001 0.1100 = 2011 0.0011 (小数点左移 2位,阶码加2) N1+N2 = 2011 0.1001+ 2011 0.0011 = 2011( 0.1001+ 0.0011 ) = 2011 0.1100 乘除法 N1=2j1S1 N2=2j2S2 则 N1 N =( 2j1S1 ) ( 2j2S2) = 2(j1+j2) (S1 S2) N1N2=
32、 2(j1-j2) (S1 S2) 浮点数的规格化 若不对浮点数作出明确规定,则同一个浮点数的表示就不是唯一的。如0.1101可表示为0.0110121 ,也可表示为1.1012-1 。为了提高数据的精度,当尾数的值不为0时,规定其绝对值应 0.5,否则要修改阶码同时移动小数点的位置,使其满足这一要求,这个过程称为浮点数的规格化。 浮点数规格化的定义是使尾数应满足: 1/2 M 1 显然,对正数,有M = 0.1xxx;对负数,其补码形式为1.0 xxx,原码形式为1. 1xxx,这些是规格化的数。否则就是非规格化数,规格化的方法是: 1、向左规格化 出现00 .0 xxx或11 .1xxx(
33、补码),就不是规格化数(这里符号位用两位)。 向左规格化规则:尾数左移1位,阶码减1。 2、向右规格化 出现01 .xxxx或10 .xxxx,表示浮点运算中尾数运算的结果的绝对值大于1,向左破坏了规格化。 向右规格化规则:尾数右移1位,阶码加1。 移动小数点的位置,使其尾数变成其标准格式。当尾数用补码表示时,规格化后的正尾数的第一位为1,负尾数的第一位为0,即正尾数为0.1xxxxxx;负尾数为1.0 xxxxx。对原码,规格化使得小数点后的第一位为1,不管是正数还是负数。 例4:将0.0011 20和-0.0011 20规格化(尾数为补码) 解:0.0011 20是正数,规格化后为0.11
34、00 2-2(尾数左移两位,阶码减2); -0.0011 20是负数,尾数的补码表示为1.1101,尾数需要左移两位,规格化后为1.0100 2-2 例5: 将123D作规格化浮点数的编码,设1位符号位,基数为2,阶码5位,采用移码表示,尾数10位,采用补码。 解:123D =1111011B = 0.111101100027 7移 = 10000+00111=10111 0.1111011000补 = 0.1111011000 符号位为0,所以浮点格式为: 0,10111,1111011000 例6: 将-0.00138D作规格化浮点数的编码,设1位符号位,基数为2,阶码5位,采用移码表示,
35、尾数10位,采用补码。解:-0.00138D= - 0.0000000001011010011B = - 0.10110100112-9 -9移 = 10000-01001= 00111 - 0.1011010011补 =1.0100101101符号位为1,所以浮点格式为:1,00111,0100101101 例7:两浮点数x =2010.1101,y = 211 (-0.1010),求x+y 设两数在计算机中以补码表示,并采用双符号位。 解:x浮 = 00 01,00.1101 y浮 = 00 11,11.0110 对阶 将x的尾数右移两位,x浮 = 00 11,00.0011 01 尾数求
36、和 00.0011 01 + 11.0110=11.1001 01 即得 x+y = 00 11,11.1001 01 规格化 该结果不是规格化数,需向左规格化,即尾数左移1位,阶码减1,得 x+y = 00 10,11.0010 10 舍入,通常采用“0舍1入法”,得 x+y = 00 10,11.0011 检查阶码是否溢出,判断方法同前面讲的。 浮点数的表示范围 已知浮点数的阶码3位(其中阶符1位,数值2位,用补码表示),尾数5位(尾符1位,尾数4位,用补码表示),小数点在尾数符号的右边求该浮点数的表示范围: 即 2E x . xxxx 最大正数:2011 0.11112=23 15/16
37、=7.5 最小正数:2100 0.00012=2-4 1/16 = 1/256 最大负数:2100 1.1111补=2-4 (-1/16)= - 1/256 最小负数:2011 1.0000补=23 (-1)= - 8七、定点数乘除法运算(一)原码一位乘法 原码乘法将符号位与数值位分开进行运算,运算结果的符号位是乘数和被乘数符号位的异或,结果的数值部分是乘数和被乘数数值部分的乘积。 图2-11是32位定点原码一位乘法的结构图,32位被乘数在R2中,运算开始时32位乘数放在R1中,R0为部分积,开始为0。64位乘积的高位在R0中,低位在R1中,R0、R1可以串联移位。 定点原码一位乘法的规则如图
38、2-12所示。对于32位乘法需要循环32次。由于每次根据乘数的一位进行操作,故称为一位乘法。 R2:被乘数;R1:乘数R0:部分积R0R1:乘积例1:用原码一位乘法进行23的四位乘法。 R0=0000,部分积 R1=0011,乘数 R2=0010,被乘数 根据乘数最低位是1还是0决定部分积R0是否加被乘数。 乘数最低位是1,加被乘数;是0不加被乘数;每次循环R0和R1要右移一位。 参见表2-8(二)补码一位乘法 比较好的带符号数乘法是布斯(Booth)算法。如图2-13所示。根据最低两个数据位是01还是10来决定加被乘数还是减被乘数。初始时需要在最右边加一个辅助位0。有关布斯算法的原理可参看“
39、计算机组成原理”例2:用Booth算法计算2(-3) 解:R2=2补 = 0010 , R1=-3补 = 1101 乘法开始前,R2 = 0010,R0 = 0000,R1=1101,辅助位P=0。 1、R1的最低位和辅助位P为10,所以进入步骤1c,将R0的值减去R2的值,结果1110送入R0,然后进入第2步,将R0和R1右移一位,结果为1111 0110,辅助位为1。 R2=0010,R1=1101,R0=0000 被乘数 乘数 部分积结果11111010为负数(补码) 2、R1的最低位和辅助位P为01,所以进入步骤1b,将R0的值加上R2的值,即1111+0010,结果0001送入R0,
40、然后进入第2步,将R0和R1右移一位,结果为0000 1011,辅助位为0。 3、判断位为10,进入步骤1c,R0减去R2,结果1110送入R0,然后进入第2步,将R0和R1右移一位,结果为1111 0101,辅助位为1。 4、判断位为11,进入步骤1a,将R0和R1右移一位,结果为1111 1010,辅助位为1。即运算结果的原码为10000110,其真值为-6。(三)定点数除法运算 实现定点一位除法的结构如图2-14所示。初始时32位除数在R2中,32位被除数在R1中,R0为0。结果商在R1中,余数在R0中。 原码一位恢复余数法 商的符号位是被除数和除数符号位的异或。 恢复余数法的流程如图2
41、-15所示。循环中包含三个步骤,减法、上商和移位。 在上商为0时,需要将余数恢复为原值。在恢复余数法中,当减法的结果为负数时,上商为0的同时还要把除数再加到差上去,恢复余数为原来的正值后再将其移一位。若减得的差为0或为正值,就不必做恢复余数的操作,上商为1并将R0R1左移一位。例3:用原码一位恢复余数除法进行7/2的运算。 R0=0000(余数) R1=0111(被除数) R2=0010(除数) 实现步骤如表2-11所示。 注意最后是R0右移一位。 结果R0=0001(余数) R1=0011(商) 原码一位加减交替法 其流程如图2-16所示。其规则是: 当余数为正时,余数左移一位,上商1 ,减
42、除数;当余数为负时,上商0,余数左移一位,加除数。 R2:除数 R1:被除数,商 R0:余数例4:用原码加减交替一位除法进行7/2运算。 初始:R0=0000,R1=0111,R2=0010,步骤如表2-12所示。循 环 步 骤 余 数 ( R0, R1) 初 始 值 0000 0111 0 1: 减0010 1110 0111 2b: 左 移 , 商0 1100 1110 1 3b: 加0010 1110 1110 2b: 左 移 , 商0 1101 1100 2 3b: 加0010 1111 1100 2b: 左 移 , 商0 1111 1000 3 3b: 加0010 0001 1000
43、 2a: 左 移 , 商1 0011 0001 3a: 减0010 0001 0001 4a: 左 移 , 商1 0010 0011 4 5: R0右 移 0001 0011 八、浮点数运算 1、浮点数加法和减法 对阶, 对阶的方法是:将原来阶码小的数的尾数部分右移,并相应地增加其阶码,以保持浮点数的值不变。 由于在右移过程中将最低位移出,所以实际上浮点数值的精度会下降。另外在尾数进行移位时要对数据进行符号位扩展。对补码形式的尾数,正数时在高位补0,负数时在高位补1。 尾数运算, 实现两个尾数的加减运算。 规格化 规格化处理通过移位尾数并相应地调整阶码来实现。通过左移来实现规格化的过程称为向左
44、规格化,其操作规则是:尾数左移1位,阶码减1,直到数据规格化。 尾数加减运算时,一般采用双符号位的补码。尾数运算的结果可能得到01.xxxxxx或10.xxxxxx。即两个符号位不相等,这在定点数运算中称为溢出,是不允许出现的。但在浮点运算中,它表示尾数求和结果的绝对值大于1,可以将其右移以实现规格化表示。这种规格化的过程称为向右规格化。其操作规则是:尾数右移1位,阶码加1。 舍入 在进行浮点数运算时,为了保证精度,在运算的中间值可以多保留一些数据位,在结果形成时需要进行舍入操作以去除这些位,方法是: 截取(chopping)法,最简单,将多余的位去掉,剩下的位不变,即有舍无入。 冯.诺依曼舍
45、入法,在截取多余位时,将剩下数据的最低位置1。 0舍1入法,移去1时在高一位加1,移去0时高一位不变。 检查阶码是否溢出 浮点数的溢出表现为阶码溢出。如果阶码正常,运算正常完成;若阶码下溢,要置结果为浮点数的机器零;若阶码上溢,则置溢出标志。 浮点数加减法运算操作流程如图2-23所示。 例1:用浮点数加法对数据0.5和-0.4375进行操作,设可存储4位尾数。 解:没有规定浮点数格式,可直接用数值运算来表示。 0.5 = 0.1000 20 -0.4375 = -0.0111 = -0.1110 2-1 步骤1:对阶。将较小的数进行右移 -0.1110 2-1 = -0.0111 20 步骤2
46、:尾数相加 0.1000 20 + (-0.0111 20)= 0.0001 20 步骤3: 规格化 0.0001 20 = 0.1000 2-3 步骤4:舍入,数据已适合4位存储,不必进行舍入 步骤5:检查溢出,本题无溢出,最后结果为: 0.1000 2-3 = 0.0001 = 0.0625 例2:x= 201 0.1101,y=211 (- 0.1010),尾数用4位补码表示,保护位2位,阶码(4位,2位是阶符)以原码表示,数的符号用两位表示,求x+y。 解:x浮 = 00 01,00.1101 y浮 = 00 11,11.0110 步骤1:对阶。阶差为11-01=10,即2,故x 的尾
47、数右移 2位,得x浮 = 00 11,00.0011 01 这里01为保护位 步骤2:尾数相加 x+y浮 = 00 11,11.1001 01 步骤3: 规格化,由于符号位与小数点后第一位数相等, 所以不是规格化数,向左规格化,得 x+y浮 = 00 10,11.0010 10 步骤4:舍入,设采用0舍1入法,得: x+y浮 = 00 10,11.0011 步骤5:检查溢出,本题无溢出,最后结果为: x+y = 210 (-0.1101) 2、浮点数乘法和除法 两个浮点数相乘,尾数相乘,阶码相加; 两个浮点数相除,尾数相除,阶码相减;结果的符号位是两个浮点数符号位的异或。 运算流程如图2-25
48、所示。 例3:用浮点数运算流程对数据0.5和-0.4375进行乘法操作,设可存储4位尾数。 解:本题和例1一样,没有规定浮点数格式,可直接用数值运算来表示。 0.5 = 0.1000 20 -0.4375 = -0.0111 = -0.1110 2-1 步骤1:阶码相加,0+(-1)= -1 步骤2:尾数相乘 0.1000 0.1110 = 0.01110000,结果为: 0.01110000 2-1 步骤3:规格化,结果为: 0.11100000 2-2 步骤4:舍入,采用0舍1入法,保留4位尾数,结果为: 0.1110 2-2 步骤5:检查溢出,因为两个数的符号相反,不会溢出, 最后结果为
49、:- 0.1110 2-2 = - 0.21875 第二节 逻辑电路 一、基本逻辑门电路 1、逻辑乘和与门 符号: 真值表:A B Y A 0 0 0 & Y 0 1 0 B 1 0 0 1 1 1 表达式:Y=AB =AB = Y=AB 2、逻辑加和或门 符号: 真值表:A B Y A 0 0 0 1 Y 0 1 1 B 1 0 1 1 1 1 表达式:Y=A+B =AB 3、逻辑反和非门 符号: 真值表:A Y A 1 Y 0 1 1 0 表达式:Y= A 上面三种基本逻辑门实现三种基本逻辑运算。 4、其它基本门电路 与非门 或非门 异或门 异或非门 (异门) (同门) A B Y
50、 A B Y A B Y A B Y 0 0 1 0 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 0 1 1 0 0 1 0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 1 Y=A B Y=A+B Y=A B Y=A B Y=A B=A B+A B Y=A B =A B+A B = A B三态门的输出有三种状态:0、1和高阻态。它有三根线,输入A、输出Y和控制线C。74LS125控制线C低电平有效。该线为高时,输出高阻态。逻辑真值关系如下: C A Y 1 高阻 0 1 1 0 0 074LS126控制线C高电平有效。该线为低时,输出高阻
51、态。逻辑真值关系如下: C A Y 0 高阻 1 1 1 1 0 0 二、二进制数加法电路 1、半加器 0000000001BABABASBAC 2、全加器 逻辑符号:iiiiiiiiiiiCBASCABACBC1 多个输入的异或门,其逻辑关系是:输入变量1的个数为偶数或零时,则输出为0;输入变量中1的个数为奇数时,输出为1。3、四位二进制数加法电路 A: 1 0 1 0B: 1 0 1 1S:1 0 1 0 1 C4 S3 S2 S1 S001234SSSSCS 4、可控反相器及加/减电路 利用补码可将减法变为加法来运算,需要一个可控反相器,它能将原码变成反码,并使其最小位加1,如图1-8所
52、示。 可控反相器实际上是一个异或门,其真值表见表1-3。 利用可控反相器可作成补码加法/减法器,如图1-9所示。SUB=0时,是加法器,做A+B运算SUB=1时,是减法器,做A-B 运算 当SUB=0时,图1-9与图1-7完全一样,其和为: 当SUB=1时,各位反相器的输出与B的各位反相,而最右边第一位也是用全加器,所以此位的相加为: 总和输出S为: 01234SSSSCS 100 BABABABBBBAAAABAS0123012311 三、微机的基本组成电路 1、算术逻辑单元 A B 算术逻辑单元可以作算术运算,也可作逻辑运算,是 ALU微机中最基本的运算单元。 Control如图1-10所
53、示。 S A和B是两个二进制数,S 图1-10 ALU的符号是运算结果,Control是控制信号。 2、触发器 触发器是微机中基本的记忆单元,用它能组成寄存器、存储器等。 RS触发器:如图1-11、1-12、1-13所示。 图1-11中,逻辑真值表如右: R S Q Q 操作 0 1 1 0 置位 1 0 0 1 复位 0 0 1 1 1 1 不确定 图1-12是RS触发器的逻辑符号,S端称为置位端,R端称为复位端。 图1-13是时标RS触发器,CLK即为时标脉冲,无论置位还是复位都必须在时标脉冲端为高电平时才能进行。 D触发器 如图1-14所示,当D端为高电位时,S端为高,R端为低,所以此时
54、Q端是高电位,称为置位;当D为低时,则反之,Q端为低电位,称为复位。 图1-15是时标D触发器,利用CLK的正跳变将D端的电位打入触发器。 D触发器也称为边缘触发的触发器,通常是正跳变触发,其逻辑真值关系如下: D CLK Q 1 1 0 0 当然也有负跳变触发的D触发器,使用是要注意极性。 JK触发器 图1-16 JK触发器 JK触发器的符号如图1-16所示。CLK的正跳变,将JK的状态打入触发器。其动作状态如上表所示。 通常用D触发器组成寄存器,用JK触发器组成计数器,因为JK触发器有计数功能。 JK触发器也有负跳变触发的。 3、寄存器 寄存器有缓冲寄存器和移位寄存器两种。 缓冲寄存器 图1-17是4位缓冲寄存器,CLR是复
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 看直播领课件
- 2025年职业技能安全生产主要负责人金属非金属矿山(小型露天采石场)-危险化学品经营单位参考题库含答案解析
- 2025年福建省中考数学模拟试卷(5月份)
- 2025年胶基糖果中基础剂物质项目规划申请报告模板
- 2025年职业技能养老护理员-理论知识参考题库含答案解析
- 看守所安全知识培训课件
- 2025年职业技能保安员保安员(初级)-保安员(中级)参考题库含答案解析
- 2025年职业技能保健调理师高级工-基础知识参考题库含答案解析
- 2025年特种作业类金属非金属矿山安全作业-金属非金属矿山安全检查作业参考题库含答案解析
- 2025年咖啡连锁经营项目提案报告
- 2025当兵心理测试题及答案
- 2025年官方兽医牧运通考试题库附参考答案详解(考试直接用)
- 2025年兵团辅警考试题库
- 2025年湖南省直机关遴选公务员考试笔试试卷【附答案】
- 家电广告效果评估报告
- 锐澳RIO抖音dp运营方案
- 2025年乒乓裁判考试题及答案
- 输电线路路经复测安全、技术交底
- lpr利率管理办法
- 印刷装订车间管理办法
- 第三章 金融远期
评论
0/150
提交评论