ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:481.71KB ,
资源ID:529745      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-529745.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机组成原理实验报告.docx)为本站会员(wj)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

计算机组成原理实验报告.docx

1、课程设计说明书计算机组成原理算法实现(一)1 课程设计目的1)随着计算机和通信技术的蓬勃发展,中国开始进入信息化时代,计算机及技术的应用更加广泛深入,计算机科学传统的专业优势已经不再存在。社会和应用对学生在计算机领域的知识与能力提出了新的要求。计算机组成原理是计算机科学与技术专业必修的一门专业主干课程。并且将这门课运用到现在生活也是很重要的。这样,便更容易形成计算机的整体概念2)本课程是在学习完本课程教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的计算机组成原理课程基础知识,进一步领会计算机组成原理的一些算法,并进行具体实现,提高分析问题、解决问题的综合应用能力。2 课程设

2、计内容与要求1)题目:计算机组成原理算法实现(一)。2)功能 能够实现定点整数的机器数表示、定点整数的变形补码加减运算、定点整数的原码一位乘法运算和浮点数的加减运算。3 功能模块详细设计3.1系统目标(1)实现定点整数的机器数表示,对于正数的定点整数,它的原码、补码、反码为它本身;移码为最高符号位变为1,其他位保持不变。对于负数的原码为最高符号位为一,数值位保持不变;补码为从低位向高位找,直到找到第一不为零的位置将第一个不为零的数后(包括第一个不为零的数)的所有数按位取反(包括符号位);反码为符号位为1,数值位按位取反;移码为符号位为0,然后从低位向高位找,直到找到第一不为零的位置将第一个不为

3、零的数后(包括第一个不为零的数)的所有数按位取反(不包括符号位)。(2)定点整数变形补码加减运算算法:首先获取两个数的变形补码,获取补码的原则是:首先判断是正数还是负数,如果是正数,则将“+”号去掉,然后将第一个“0”变成“00”;如果是负数,则将“-号去掉,然后从低位向高位找,直到找到第一不为零的位置将第一个不为零的数后(包括第一个不为零的数)的所有数按位取反(包括符号位)。然后在通过按位加运算计算两个数的值,如果是减法也转换成加法做。(3)定点原码乘法:乘数的每一位分别跟被乘数的每一位相乘,1*1=1,1*0|0*1|0*0=0,其中小数点后面的第一位为两个数的符号运算。乘数以及被乘数转化

4、为原码形式正数直接操作,负数第一个由零变为1。浮点加减法根据阶码相同阶码则后面的尾数做加减运算,阶码不相同先把阶码转化为相同的阶码,同时改变的尾数做加减法运算。按每一个界面的返回的时候就会转变为开始的界面。(4)浮点数的加减运算:首先将两个浮点数用变形补码表示。然后进行对阶运算,若两数的阶码相同,则可直接对两数的尾数进行加减运算,否则必须先使两数的阶码相同,原则是将阶码小的向阶码大的看起,再对阶码小的浮点数的尾数进行移位处理。再将两个数的尾数进行求和,并进行规格化处理,规格化处理的原则是:如果符号位是11并且小数点后的第一位也是1,则将尾数左移,直到小数点后的第一个数为0;如果符号位是00并且

5、小数点后的第一个数是0,则进行左移处理,直到小数点后的第一个数为1;如果符号位是10或01,则将尾数右移一位。最后进行舍入处理且判断溢出。流程图如下:(5)当用户遇到不懂的问题或者是然间操作上有疑问,可以有地方寻求帮助。从而使这款软件更加的为用户着想,得到好评。3.2主体功能登录界面设计编写Button button = new Button(确认);语句,使得确认按钮为button。紧接着创建新的事件。这是一个窗口如图1,用户需要在框里填写密码,具体是passwrod.equals(text1.getText()语句来获取框里的内容。然后比较是否正确。如果正确则显示“欢迎进入”界面(图2)。

6、如果不正确,则显示“口令错误重新输入”(图3)。并且通过static int m=0; 语句来记录用户输入的次数,直到m=3时,系统自动关闭如图4所示.图1 主界面图图2 口令正确激活使用图3 口令错误重新输入图4 三次口令错误系统自动关闭3.3定点整数的机器表示点击主界面的按钮“定点整数的机器表示”,进入图5所示界面。根据提示,在框中输入一个二进制数并点击按钮原码,该二进制数的原码则显示在下一个框中如图6。对于正数的定点整数,它的原码、补码、反码为它本身,移码为最高符号位变为1,其他位保持不变。对于负数的原码为最高符号位为一,数值位保持不变;反码为符号位为1,数值位按位取反(图7);补码为从

7、低位向高位找,直到找到第一不为零的位置将第一个不为零的数后(包括第一个不为零的数)的所有数按位取反(包括符号位)语句为if(yuanb-1=1) break; b-;(图8);移码为符号位为0,然后从低位向高位找,直到找到第一不为零的位置将第一个不为零的数后(包括第一个不为零的数)的所有数按位取反(不包括符号位)如图9所示。图5 定点整数的机器表示界面图6 二进制对应的原码图7 二进制对应的反码图8 二进制对应的补码图9 二进制对应的移码3.4定点整数的变形补码加减运算点击主界面的按钮“定点整数的变形补码加减运算”,进入图10所示界面。根据提示,在第一、第二个框中分别输入一个数。点击按钮“加法

8、”“减法”得到值,如图11所示。利用语句if(me1=1) String s1=work1(jt1.getText();String s2=work2(jt2.getText();if(s1.length()s2.length()r=s1.length();else r=s2.length();char c=new charr;char d=new charr;来计算加法。如果是减法也转换成加法做。首先判断是正数还是负数,如果是正数,则将“+”号去掉,然后将第一个“0”变成“00”;如果是负数,则将“-号去掉,然后从低位向高位找,直到找到第一不为零的位置将第一个不为零的数后(包括第一个不为零的

9、数)的所有数按位取反(包括符号位)。然后在通过按位加运算计算两个数的值。图10定点整数的变形补码加减运算界面图11定点整数的变形补码加减运算界面3.5定点整数的原码乘法选择主窗体中“定点整数的原码乘法”时进入图12所示的窗体界面。根据提示,在第一、第二个框中分别输入一个数。点击按钮“乘法”得到值,如图13所示。char temp1=new charn1+n2-4;char temp2=new charn1+n2-4;语句功能是实现两数相乘。乘数的每一位分别跟被乘数的每一位相乘,1*1=1,1*0|0*1|0*0=0,其中小数点后面的第一位为两个数的符号运算。乘数以及被乘数转化为原码形式正数直接

10、操作,负数第一个由零变为1。语句if(by=1) ss1.getChars(2, n1, temp2, 0); else for(int g=0;gn1+n2-4;g+)。作用是得到两数之和。图12定点整数的原码乘法界面图13定点整数的原码乘法结果3.6浮点数的加减运算选择主窗体中“浮点数的加减运算”时进入图14所示的窗体:String g1=dJ(da,db);语句是获得阶码之间的差。String ss=sg.substring(index+1)ss1=ss.replaceFirst(0, 00);语句来获得第一个数的补码,以此类推。使用语句if(jie!=0) g6=jM(g3,jie);

11、g6=hZ(g6);来判断是否溢出。如果符号位是11并且小数点后的第一位也是1,则将尾数左移,直到小数点后的第一个数为0;如果符号位是00并且小数点后的第一个数是0,则进行左移处理,直到小数点后的第一个数为1;如果符号位是10或01,则将尾数右移一位。最后进行舍入处理且判断溢出。如图15所示。图14 浮点数的加减运算界面图15浮点数的加减运算结果3.7帮助选择主窗体中“帮助”时进入图16所示的窗体界面。简单的一个小程序,并没有完善其功能。也可以没有这个选项。具体语句是Button button5 = new Button(帮助); 功能是按钮命名为帮助。内容显示语句为 JOptionPane.

12、showMessageDialog(null, 这是一个功能简单的小程序, 提示, JOptionPane.ERROR_MESSAGE);图16 帮助按钮显示功能4 设计小结这次计算机组成原理课程设计使我的能力得到了很大的提高,此外使我对上学期所学的计算机组成原理的知识得到了提高,加深了对计算机工作原理的认识。我也体会到了作为一个大学生,要想学有所得,就得学习主动,不要什么都希望别人亲自传授,面对问题要自己去努力解决,多问问身边的同学,多动手查查,多上网找找,所以要想成功就得事事做到细心,耐心,恒心。 这次的课程设计,加强了我们动手、思考和解决问题的能力。巩固和加深了对计算机加法器的并行进位和

13、串行进位的理解,提高综合运用所学知识解决问题的能力。培养了我们选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。通过Java软件的使用,让我们对其中的原理能清楚的掌握。此外,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。而且做课程设计同时也是对课本知识的巩固和加强,平时看课本时,有些问题就不是很能理解,做完课程设计,那些问题就迎刃而解了。而且还可以记住很多东西。认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。所以这个期末测试之后的课程设计对我们的作用是非常大的。这次的课程设计使我懂得了理论与实际相结合是很非常

14、重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在整个设计过程中,构思是很花费时间的。当然,有时用错了方法,总是实现不了。同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。通过本次课程设计进一步了解了定点整数的各类运算,以及对定点整数的各项操作。加深了对组成原理中定点整数的机器数表示,定点整数的变形补码加减法运算,定点整数的原码一位乘法运算和浮点数的加减法运算。更好的了解了组成原理,更好的明白了组成原理的运算的实现,同时对于JAVA的程序运用也更为熟

15、练。经过将近一个月的的计算机组成原理课程设计,让我们体会到了苦尽甘来的滋味,这次课程设计使我对上学期老师所教的计算机组成原理的知识得到了巩固和提高.参考文献1 启东计算机公司.CCT-TV计算机组成原理2 王爱英.计算机组成原理与系统结构.北京:清华大学出版社,20013 蒋本珊,计算机组成原理与系统结构,北京航空航天大学出版社4 白中英. 计算机组成原理(第五版)M. 北京: 科学出版社, 2010.附录:Class apackage 组成原理;import java.*;import javax.*;import javax.swing.*;import java.awt.event.*;

16、import java.awt.*;public class a extends JFrame implements ActionListenerpublic a() super(); setSize(700, 500); setLocation(200,100); setLayout(null);setTitle(机器数的表示);JLabel label1 = new JLabel(定点整数的机器数表示:);label1.setFont(new Font(,1,30);label1.setBounds(170,50,500,100);JLabel label2 = new JLabel(请输

17、入一个二进制数:);final JLabel label3 = new JLabel(该数对应的原码是:);label2.setFont(new Font(,1,20);label3.setFont(new Font(,1,20);label2.setBounds(110,150,200,120);label3.setBounds(110,210,200,120);final JTextField jt1 = new JTextField(null, 50);final JTextField jt2 = new JTextField(null, 50);jt1.setBounds(330,19

18、0,200,35);jt2.setBounds(330,250,200,35);Button bt1 = new Button(输入);Button bt2 = new Button(原码);Button bt3 = new Button(反码);Button bt4 = new Button(补码);Button bt5 = new Button(移码);Button bt6 = new Button(返回);bt1.setBounds(70,350,80,30);bt2.setBounds(160,350,80,30);bt3.setBounds(250,350,80,30);bt4.se

19、tBounds(340,350,80,30);bt5.setBounds(430,350,80,30);bt6.setBounds(520,350,80,30);this.add(label1);this.add(label2);this.add(label3);this.add(jt1);this.add(jt2);this.add(bt1);this.add(bt2);this.add(bt3);this.add(bt4);this.add(bt5);this.add(bt6);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this

20、.setVisible(true);bt1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e1) jt1.requestFocus(true); );bt2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e1) String shu=jt1.getText(); int a=shu.length(); char yuan=shu.toCharArray(); char zh

21、ong=shu.toCharArray(); if(zhong0=+) yuan0=0; for(int i=1;ia;i+) yuani=zhongi; if(zhong0=-) yuan0=1; for(int i=1;ia;i+) yuani=zhongi; String shu1=new String(yuan); jt2.setText(shu1); );bt3.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e1) String shu=jt1.getText(); int

22、 a=shu.length(); char yuan=shu.toCharArray(); char zhong=shu.toCharArray(); if(zhong0=+) yuan0=0; for(int i=1;ia;i+) yuani=zhongi; if(zhong0=-) yuan0=1; for(int i=1;ia;i+) if(zhongi=1) yuani=0; else yuani=1; String shu1=new String(yuan); label3.setText(该数对应的反码是:); jt2.setText(shu1); );bt4.addActionL

23、istener(new ActionListener() public void actionPerformed(ActionEvent e1) String shu=jt1.getText(); int a=shu.length(); char yuan=shu.toCharArray(); char zhong=shu.toCharArray(); if(zhong0=+) yuan0=0; for(int i=1;i=1) if(yuanb-1=1) break; b-; for(int i=1;ib-1;i+) if(zhongi=1) yuani=0; else yuani=1; S

24、tring shu1=new String(yuan); label3.setText(该数对应的补码是:); jt2.setText(shu1); );bt5.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e1) String shu=jt1.getText(); int a=shu.length(); char yuan=shu.toCharArray(); char zhong=shu.toCharArray(); if(zhong0=+) yuan0=1; for(int i

25、=1;i=1) if(yuanb-1=1) break; b-; for(int i=1;ib-1;i+) if(zhongi=1) yuani=0; else yuani=1; String shu1=new String(yuan); label3.setText(该数对应的移码是:); jt2.setText(shu1); );bt6.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e1) setVisible(false); new dl().setVisible(true); );Overr

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2