当前位置:文档之家› 微机原理复习概要

微机原理复习概要

微机原理1、原码、补码表示范围举例:某机字长8位,采用定点表示法,可表示的纯小数或整数的表示范围是多少?若采用浮点表示法,阶码3位,尾数5位,表示的数值范围是多少?定点小数:-0.1111111 ~ +0.1111111,即-127/128~+127/128定点整数:-1111111.~+1111111.,即-127~+127定点小数的表示范围:-.1111....1 ≤X ≤+.1111 (1)即:-(1-2-n) ≤X≤+(1-2-n)定点整数的表示范围:-1111....1 ≤X ≤+1111. (1)即-(2n-1) ≤X ≤+ (2n-1)机器字长p+m+2位,其中尾数占m+1位,阶码占p+1位浮点数所能表示的数值范围应分成正、负数。

分别表示如下:正数:+2-m•2-(2p-1 )≤X≤+(1-2-m) •2+(2p- 1)负数:-(1-2-m) •2+(2p- 1)≤X≤-2-m•2-(2p-1 )某机字长32位,浮点表示时,阶码占8位,尾数占24位,各包含一个符号位。

问:(1)带符号定点小数的最大表示范围是多少?(2)带符号定点整数的最大表示范围是多少?(3)浮点表示时,最大的正数是多少?(4)浮点表示时,最大的负数是多少?(5)浮点表示时,最小的规格化正数是多少?答案:(1) -1~+(1-2-31)(2) -2+31~+ (2+31-1)(3)(1-2-23)* 2+127(4)- 2-23* 2-128(5) +2-1*2-128③注意事项浮点数基值的选择rm=2、8、16尾数的基值,增大数的表示范围,不降低数的表示精度浮点数的规格化尾数≥1/rm,即尾数小数点后的第一位数是非02、原码表示法将带符号数的符号位数值化(习惯上用“0”表示“+”,用“1”表示“-”),数码位保持不变,即原码表示法。

例如:X=+0.101101 Y=-0.010110则[X]原=0.101101 [Y]原=1.0101103、补码表示法举例:若X=+0.10110010根据定义:[X]补=0.10110010若X=-0.10110010根据定义:[X]补=2+(-0.10110010)=10.00000000-0.10110010=1.01001110求补码的简易方法:正数的补码同原码;负数的补码,保持原码符号位不变(“1”),数码位各位变反,末位加1。

无论正数还是负数,都必须先求原码。

③已知[X]补,求[X]原方法对于正数:[X]原=[X] 补对于负数:[X]原=[[X]补]补例:若[X]补= 1.10110001[X]原=1.01001111④已知[X]补,求[-X]补的方法将[X] 补连同符号位一起,各位变反,末位加1;例:若[X]补= 1.10110001[-X]补=0.01001111⑤已知[X]补,求[X/2]补、[X/4]补的方法将[X] 补连同符号位一起右移1位,左边补1位与符号位相同的数码,则得到[X/2]补;同理,若右移2位,则得到[X/4]补;例:若[X]补= 1.01101111[X/2]补=1.10110111[X/4]补=1.11011011⑥已知[X]补,求[2X]补、[4X]补的方法将[X] 补左移1位,得到[2X]补,右边补“0”;若左移2位,则得到[4X]补。

例:若[X]补= 0.00101101[2X]补=0.01011010[4X]补=0.101101004、反码表示法求负数的反码也有简便方法:即将原码的符号位保持不变,数码位各位变反。

举例:若X=-0.11011001[X]原=1.11011001[X]反=1.001001105、浮点数的原码、补码和反码表示法浮点数由两个定点数组成,阶码是定点整数,尾数是定点小数,其三种编码的具体格式以下面的例子说明。

例1:若X=+0.11011001×2-110,该浮点数在机内采用如下格式:X=-110,+0.11011001[X]原=1110,0.11011001[X]反=1001,0.11011001[X]补=1010,0.11011001例2:若X=-0.10010111×2+110,该浮点数在机内采用如下格式:X=+110,-0.10010111[X]原=0110,1.10010111[X]反=0110,1.01101000[X]补=0110,1.011010016、常用的错误检测码有两类:检错码和纠错码。

奇偶校验码-常用的检错码海明码-常用的纠错码数据校验码实现的原理就是在所传输的信息中加入一些冗余码,使合法数据编码出现某些错误时,就成为非法编码。

这样,就可以通过检测编码的合法性来达到发现错误的目的。

数据校验位的多少与码距紧密相关。

码距的概念是什么呢?即根据任意两个合法码之间至少有几个二进制位不相同而确定的。

仅有一位不同,称其码距为1。

一般来说,码距越大,纠错能力越强,但数据冗余也越大,即编码效率低了。

所以,选择码距要取决于特定系统的参数。

数字系统的设计者必须考虑信息发生差错的概率和该系统能容许的最小差错率等因素。

利用校验码实现对数据信息的校验,目的是提高计算机的可靠性。

检错与纠错的方法很多,这里只介绍常用的三种数据校验方法:奇偶校验、海明校验和循环冗余校验(CRC)。

奇偶校验码是一种开销最小,能发现数据代码中一位出错情况的编码,常用于存储器读写检查,或ASCII字符传送过程中的检查。

它的实现原理是使码距由1增加到2。

构成规则:奇偶校验通常用来检验单个字符的错误。

即发送端在每个字符的最高位之后附加一位奇偶校验位。

这个校验位可为“1”或“0”,以保证整个字符中“1”的个数是奇数(称奇校验)或偶数(称偶校验)。

奇偶校验只能发现一位错或奇数个位错,但不能确定是那一位错,也不能发现偶数个错,更无法识别错误信息的位置。

考虑到一位出错的几率比多位出错的几率高得多,该方案还是有很好的使用价值。

纠错码(码距为3)大、中型计算机在存储器校验时,主要采用海明校验。

海明校验是由R.Hamming于1950年提出的,是目前仍广泛被采用的一种很有效的校验方法。

海明校验实现原理海明校验码以奇偶校验为基础,但校验位不是一位,而是多位。

它实质上就是一种多重奇偶校验码。

它的实现原理是:在数据中加入几个校验位,并把数据的每一个二进制位分配在几个奇偶校验组中,当某一位出错后,就会引起有关的几个校验组的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为自动纠错提供了依据。

7、补码加减法运算方法对于补码加减法运算需要证明如下公式:[X+Y]补=[X]补+[Y]补[X-Y]补=[X]补+[-Y]补例1:已知:X=-0.0625,Y=-0.75。

求:X+Y,X-Y解:X=-0.0001 Y=-0.1100[X]原=1.0001 [Y]原=1.1100[X]补=1.1111 [Y]补=1.0100[-Y]补=0.1100[X]补=1.1111 [X]补=1.1111+ [Y]补=1.0100 + [-Y]补=0.1100---------------------- -----------------------[X+Y]补=1.0011 [X-Y] 补=0.1011[X+Y]原=1.1101 [X-Y] 原=0.1011X+Y=-0.1101 X-Y=+0.1011=-0.8125 =+0.6875例2:已知:X=-20,Y=+9。

求:X+Y,X-Y解:X=-10100 Y=+01001[X]原=110100 [Y]原=001001[X]补=101100 [Y]补=001001[-Y]补=110111[X]补=101100 [X]补=101100+ [Y]补=001001 + [-Y]补=110111---------------------- -----------------------[X+Y]补=110101 [X-Y] 补=100011[X+Y]原=101011 [X-Y] 原=111101X+Y=-01011 X-Y=-11101=-11 =-29结论:补码运算能将减法变为加法,是的运算器中只需一个加法器;补码加减法运算时,符号位与数码位一样参加运算,能自然得到结果的正确符号;补码小数的加减法运算以“2”为模,补码整数运算以“2n+1”为模,即符号位向更高位的进位自然丢失,不影响运算结果的正确性。

2、定点加减法运算中的溢出问题“运算溢出”是指运算结果大于机器所能表示的最大正数或小于所能表示的最小负数。

“运算溢出”只对带符号数的运算有效。

下面举例说明什么情况下会产生溢出。

[X]补=0.1010 [X]补=1.0001+ [Y]补=0.1001 + [Y]补=1.0111---------------------- -----------------------[X+Y]补=1.0011 [X+Y] 补=0.1000从上述例子可以看出,两个正数相加,结果为负数;而两个负数相加,结果为正数,显然是错误的,其原因是由于运算产生了溢出;除此之外,正数减负数或负数减正数,也可能产生运算溢出。

溢出是一种错误,计算机在运算过程中必须能发现这种错误,并进行必要的处理,否则将产生严重的后果。

常用的判溢出的方法有以下两种:采用变形补码判溢出;利用符号位进位信号判溢出。

①采用变形补码判溢出“变形补码”是采用2个符号位的补码,记作[X]’补。

上面的两个例子,若采用变形补码运算,结果为:例1:[X]’补=00.1010 例2:[X]’补=11.0001+ [Y]’补=00.1001 + [Y]’补=11.0111------------------------ -----------------------[X+Y]’补=01.0011 [X+Y]’补=10.1000例1中,运算结果的两位符号位为“01”,表示产生了正溢出。

例2中,运算结果的两位符号位为“10”,表示产生了负溢出。

不溢出时,两个符号位应相同,为“00”或“11”。

一、已知X=-0.1000101×2-111Y=+0.0001010×2-100(1)用补码运算求X+Y=?,并判断是否有溢出。

(2)用补码运算求X+Y=?,并判断是否有溢出。

解:(1)对阶X=-0.0001000×2-100(2)运算[X]补=11 100,11.1111000 [X]补=11 100,11.1111000+ [Y]补=11 100,00.0001010 + [-Y]补=11 100,11.1110110---------------------------------------- --------------------------------------------[X+Y]补=11 100,00.0000010 [X-Y]补=11 100,11.1101110(3)结果规格化[X+Y]补=11 100,00.0000010=10 111,00.1000000 溢出[X-Y]补=11 100,11.1101110=11 010,11.0111000X-Y=-0.1001000×2-110、已知X=-7.25,Y=+28.5625(1)将X和Y分辨转换成二进制浮点数(阶码4位,尾数10位,各包含一个符号位;(2)用变形补码求X-Y=?解: X=-111.01=-0.11101×2+011Y=+11100.1001=+0.111001001×2+101[X]原=00 011,11.111010000 [Y]原=00 101,00.111001001[X]补=00 011,11.000110000 [Y]补=00 101,00.111001001[-Y]补=00 101,11.000110111(1)对阶[X]补=00 101,11.110001100[-Y]补=00 101,11.000110111(2)尾数运算11.110001100+ 11.000110111--------------------------10.111000011(3)结果规格化[X-Y]补=00 110,11.0111000011[X-Y]原=00 110,11.1000111101X-Y=-0.1000111101×2+110结论:采用变形补码进行加减运算时,运算结果的两位符号位应相同;若两个符号位为“00”,表示结果是一个正数,反之,若为“11”,表示结果是负数;若两个符号位不同,则表示运算产生了溢出,且左边一位表示结果的正确符号,即若结果的两位符号位为“01”,表示结果的正确符号应为正,即产生了正溢出。

相关主题