双符号位法:
将符号位扩展为2位,具体说就是对于正数两个符号位是“00”,对于负数两个符号位是“11”。
两个符号位都看做数码一样参加运算。
两个数相加后,其结果的符号位出现“01”或“10”两种组合时,表示发生溢出。
符号位“01”,上溢出
符号位“10”,下溢出
符号位“00”或“11“,未溢出
下面的问题是如何检查加减运算中的溢出问题。
通常有三种表述方式(说法):
(1)两个符号相同的补码数相加,如果和的符号与加数的符号相反,或两个符号相反的补码数相减,差的符号与减数的符号相同,都属于运算结果溢出。
这种判别方法比较复杂,要区别加还是减两种不同运算情况,还要检查结果的符号与其中一个操作数的符号的同异,故很少使用;
(2)两个补码数相加减时,若最高数值位向符号位送的进位值与符号位送向更高位的进位值不相同,也是运算结果溢出。
(3)在采用双符号位(如定点小数的模4补码)运算时,若两个符号位的得值不同(01或10)则是溢出。
01表明两个正数相加,结果大于机器所能表示的最大正数,称为"上溢";10表明两个负数相加,结果小于机器所能表示的最小负数,称为"下溢";双符号位的高位符号位,不管结果溢出否,均是运算结果正确的符号位,这个结论在乘法运算过程中是很有实际意义的。
请注意,在采用双符号位的方案中,在寄存器和内存储器存储数据时,只需存一位符号,双符号位仅用在加法器线路部分。
否
图2-3-1定点整数加减法流程图
·2.2.4定点整数的原码乘法运算
在定点计算中,两个原码表示的数相乘的运算规则是:
乘积的符号位由两数的符号位按异或运算得到,而乘积的数值部分则是两个正数相乘之积。
机器算法:
机器中一种方法是多次采用“加法-移位“的方法来实现,称为串行乘法器,它的硬件结构简单,但是速度慢,目前广泛使用的是流水式阵容乘法器,称为并行乘法器。
无符号数m乘以n会产生m*n个位积,出现m+n个列和,并行乘法器的关键是快速产生m*n个位积,对位积进行相加运算产生m+n列和。
否
图2-4-1定点整数的原码乘法流程图
·2.2.5浮点数的加减运算
浮点数的加减运算分为六步:
(1)0操作数检查
浮点加减运算过程比定点运算过程复杂。
如果判知两个操作数X或者Y中有一个数位0,即可得知运算结果而没有必要再进行后续的一系列操作以节省时间。
0操作数检查步骤则用来完成这一功能。
参加加法运算的数据都是非零,进入下一步。
(2)比较阶码大小并完成对阶
为了便于直观理解,假设两数均以补码表示,阶码采用双符号位,尾数采用单符号位。
两浮点数进行加减,首先要看两个数阶码是否相同,若二数阶码不同,表示小数点位置没有对齐,此时必须使两个数阶码相同,这个过程叫做对阶。
对阶操作规定使尾数右移,尾数右移后阶码做相应增加,因此对阶时,总是使小阶向大阶看齐。
(3)对阶结束后,即可进行尾数的求和运算。
无论加法运算还是减法运算,都按加法进行操作,其方法与定点加减法运算完全一样。
(4)结果规格化
a.采用双符号位表示尾数时,如果两符号位01或10时,应将结果尾数右移一位,阶码加1.
b.如果尾数最高数值位与符号位相同,应将尾数右移,阶码减1,直至数值位最高位与符号位相反。
(5)舍入运算
浮点运算在对阶或右规时,尾数需要右移,被右移出去的位会被丢掉,从而造成运算结果精度的损失。
为了减少这种精度损失,可以将一定位数的移出位先保留起来,称为保护位,在规格化后用于舍入处理IEEE754标准列出了四种可选的舍入处理方法:
就近舍入、朝+∞舍入、朝-∞舍入、朝0舍入。
(6)判断结果是否溢出
根据补码的双符号检查溢出的方法确定阶码是否溢出。
与定点数运算不同的是,浮点数的溢出是以其运算结果的阶码的值是否产生溢出来判断的。
若阶码的值超过了阶码所能表示的最大正数,则为上溢,进一步,若此时浮点数为正数,则为正上溢,记为+∞,若浮点数为负数,则为负上溢,记为-∞;若阶码的值超过了阶码所能表示的最小负数,则为下溢,进一步,若此时浮点数为正数,则为正下溢,若浮点数为负数,则为负下溢。
正下溢和负下溢都作为0处理。
提示溢出
图2-5-1浮点数的加减运算流程图
·3实验结果图解
针对题目的功能要求,我用java来实现功能,将程序分为五个界面,。
Java1界面用于主界面的设置,用户输入口令进入运算;java2界面用于完成定点整数的机器表示;java3界面用于实现定点整数的变形补码加减运算;java4界面用于对定点整数的原码乘法实现;java5界面实现浮点数的加减运算。
·3.1登录界面
图3-1-1登录界面图
当输入的密码错误时弹出窗口
图3-1-2登录界面图
·3.2定点整数表示
当输入一个二进制数时,点击对应的按钮,则结果显示。
图3-2-1定点整数机器的显示
·3.3定点整数的变形补码加减
当输入两个二进制数时,单击加法或者减法按钮,则对应的结果则显示。
图3-3-1定点整数的变形补码加减运算结果图
·3.4定点整数的原码乘法
当输入两个二进制数时,单击乘法按钮,则对应的结果则显示。
图3-4-1定点整数的原码乘法结果图
·3.5浮点数的加减
当输入两个浮点数的阶码和尾数时,单击加法或减法按钮,则对应的结果显示。
图3-5-1浮点数的加减运算的结果图
·4设计小结
通过本次实验我掌握了算术逻辑运算器的工作原理,掌握了简单运算器的数据传送通道,了解了组合逻辑电路的运算功能发生器运算功能,能够按给定数据,完成实验指定的算术/逻辑运算。
自己能够更清楚了算术逻辑运算器的功能,同时更明白逻辑加与算术的区别,也加强了自己的动手能力。
实验开始的时候,接入思路还蛮顺利的,开始的实验证明也能很快验证。
但在练习中,就遇到问题了,因为结果和旁边的同学不一样,自己多次调试,还是自己的结果。
最后问同学,同学说是机器的问题,这证明自己的实验步骤没有错。
后面的练习,其实都是前面练习的延续,可以说只要弄懂了其中的原理,都可以顺利的做下去。
不过同时也需要耐心和细心。
同时我也掌握了带进位控制的算术运算功能发生器的功能,掌握了按指定的数据完成几种指定的算术运算。
而且真切地知道了实验真得很需要耐心和细心,特别是这个实验要在操作前先对进位标志清零,否则整个实验就全部失败了。
在之前的实验基础上,对一些实验出现的问题及时向老师请教了。
所以这个实验进行得比较顺利。
在此实验中,强化了实践能力,更好的学习了专业知识,计算机的运算系统,现在已经深切的被我掌握了。
锻炼了实际的基础学习能力,动手能力,只有掌握了相应的学习能力,才能更好地迎接新的学科,改变自己的态度,端正学习的态度,找到适合自己的方法,才是学习计算机组成原理课程的实际目的。
学习了计算机组成原理这本书后,使我懂得了许多的专业知识,真正的改变了我对软件学科的综合看法,而且还掌握了具体的知识,并且学会了相应的学习方法。
总之,这本书使我更好的学会了学习计算机知识。
·5参考文献
[1]将本珊,计算机组成原理,北京:
清华大学出版社,2003
[2]白中英,计算机组成原理(第三版),科学出版社,2002.
[3]甘岚主编.计算机组成原理与系统结构北京:
北京邮电大学出版社,2008
[4]白中英,杨春武主编.计算机组成原理题解、题库与实验(第三版)西安:
科学出版社,2001
[5]卢洪虎,马卓杰,林洪军,《计算机工程与设计》,2006.
[6]杨春武,冯一兵,计算机硬件基础实验教程,清华大学出版社,2005.
[7]陈湘,ASP.NET与网站开发编程.北京:
清华大学出版社,2002.
[8]王爱英,计算机组成与结构第3版,北京:
清华大学出版社,2001
[9]薛胜军,计算机组成原理,武汉:
华中科技大学出版社,2000
[10]孙群力,计算机组成原理,北京:
科学出版社,2000
[11]辛云辉,计算机组成原理实用教程,北京:
清华大学出版社,2001
[12]刘丽芳,宋焕章,计算机组成与结构,北京:
北京邮电大学出版社,2004