计算机组成原理算法实现.docx
- 文档编号:2027316
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:28
- 大小:165.62KB
计算机组成原理算法实现.docx
《计算机组成原理算法实现.docx》由会员分享,可在线阅读,更多相关《计算机组成原理算法实现.docx(28页珍藏版)》请在冰点文库上搜索。
目 录
目 录........................................................................................................................1...............
1设计目的....................................................................................................................1..............
2设计内容....................................................................................................................1..............
3实现方法....................................................................................................................1..............
3.1系统目标 1
3.2主体功能 2
3.3开发环境 6
4小 结....................................................................................................................7..............
附 录........................................................................................................................8...............
附录1源程序清单........................................................................................................8.............
计算机组成原理课程设计
计算机组成原理算法实现(五)
1设计目的
本课程设计是在学完本课程教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的计算机组成原理课程基本知识,进一步领会计算机组成原理的一些算法,并进行具体实现,提高分析问题、解决问题的综合应用能力。
2设计内容
计算机组成原理算法实现(五)
能够实现机器数的真值还原(定点整数)、定点整数的单符号位补码加减运算、定点整数的原码乘法运算和浮点数的加减运算。
3实现方法
3.1系统目标
本程序含有以下几个功能模块,分别能够实现如设计内容所设计的功能。
共有
5个类,各类之间的关系如图3-1所示:
计算机组成原理算法实现(五)
输入口令
机器数
的真值还原
定点整数的单符号位补码加减运算
定点整
数的原码乘法
浮点数
的加减运算
输入一个
带符号的
二进制数
依次输入两
个单符号二进制数
依次输入两
个单符号二进制数
依次输入两个数的阶码和尾数
原 反 补
码 码 码
显 显 显
示 示 示
移
码
显示
返
回
加法结果显示
返
回
乘法结果显示
返
回
加法介码显示
加 减
法 法
尾 介
数 码
显 显
示 示
减法尾数显示
返
回
图3-1各类间的关系
9
开 始
判断口令是否
正确
重新输入<=3次
是否正确
选择界面
机器数的真
值还原(定点
整数)
定点整数的单符号位补码加减运算
定点整
数的原
码码乘法
浮点数
加减法
系统流程图如图3-2所示:
图3-2系统流程图
3.2主体功能
Main.java
该java文件为整个程序的主类。
luojiyunsuan.java
实现机器数的真值还原(定点整数)
zhengshujiajian.java
实现定点整数的单符号位补码加减运算、定点整数的
zhengshuchengfa.java
实现定点整数的原码乘法运算。
fudianyunsuan.java
实现浮点数的加减运算。
运行程序并进行相关调试:
程序的主界面如图3-2所示:
图3-2主界面当输入的口令出错时所显示的提示,如图3-3:
图3-3口令错误提示
错误过多,单击确定后程序自动关闭,如图3-4:
图3-4口令错误过多提示
输入正确的口令后,程序显示登陆成功,如图3-5所示:
图3-5登陆成功提示
定点整数的真值还原如图3-6:
图3-6定点整数的真值还原定点整数的单符号位补码加减运算如图3-7:
图3-7定点整数的单符号位补码加减运算
定点整数的原码乘法运算如图3-8:
图3-8定点整数的原码乘法运算浮点数的加减运算如图3-9所示:
图3-9浮点数的加减运算
3.3开发环境
JDK1.6NetBeansIDE6.8Windows7
4小 结
通过这次的计算机组成原理的课程设计,使我对计算机的认识有了更进一步的加深和认知。
在这为期一周的课程设计的期间内,在进行课程设计的过程中,我不仅巩固了以往所学过的知识,还学到了许多在课堂上所学不到的东西,比如动手能力,实际问题的解决能力和与团队中成员的团队协作与配合的能力,这都使我受益匪浅。
当然,在这个过程中,也有许多问题与困难出现。
有的经过自己的思考或与他人合作能得以解决,有的也的确费了一些周折。
但无论如何,这次对于课题的能够实现机器数的真值还原(定点整数)、定点整数的单符号位补码加减运算、定点整数乘法运算和浮点数的加减运算的设计总体来说还是比较令人满意的,不仅用到了课堂上所学到的知识,还加入了自己的一些想法与观点,而且在对编程这一方面也有了很多新的感悟与提高。
不得不说是获益良多。
经过了这次的课程设计,我想,对于我日后的计算机的相关的学习肯定会有诸多助益与影响,为将来的学习生活打下了坚实的基础。
附 录
附录1源程序清单
MainFrame.javapackagecom.ys;publicclassMain{
publicstaticvoidmain(Stringargs[]){newNewclass(null);
}
}
Newclass.javapackagecom.ys;importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.JOptionPane;
publicclassNewclassextendsFrameimplementsActionListener{staticinti=0;
staticintm=1;Labela1,a2,a22;TextFieldtext1;
Buttonbutton1,m1,m2,m3,m4,m5;Fontf;
Newclass(Strings){super(s);setLayout(null);
f=newFont("楷体",Font.BOLD,20);
m1=newButton("机器数的真值还原(定点整数)");m2=newButton("定点整数单符号位补码加减运算");m3=newButton("定点整数的原码乘法");
m4=newButton("浮点的加减运算");
m1.addActionListener(this);m2.addActionListener(this);m3.addActionListener(this);m4.addActionListener(this);m5.addActionListener(this);m1.setBounds(10,30,160,25);
m2.setBounds(175,30,190,25);
m3.setBounds(370,30,120,25);
m4.setBounds(495,30,95,25);add(m1);
add(m2);
add(m3);
add(m4);
a1=newLabel("计算机组成原理算法实现(五)",Label.CENTER);a2=newLabel("输入口令(000):
");
a22=newLabel("登陆成功",Label.CENTER);a1.setBounds(150,100,300,40);
a1.setBackground(Color.WHITE);a1.setFont(f);
a2.setBounds(150,200,90,25);a2.setBackground(Color.white);a22.setBounds(200,200,200,25);
a22.setForeground(Color.white);a22.setBackground(Color.green);a22.setVisible(false);
text1=newTextField(18);text1.setEchoChar('*');text1.setBounds(240,200,200,25);button1=newButton("确认");button1.setBounds(270,250,70,30);button1.addActionListener(this);add(a1);
add(a2);
add(a22);add(text1);add(button1);
setBackground(Color.white);setBounds(100,100,640,400);
setVisible(true);validate();
addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
}
publicstaticvoidmain(Stringargs[]){newNewclass("计算机组成原理");
}
publicvoidactionPerformed(ActionEvente){Strings=newString("000");
if(e.getSource()==button1){
while(i==0&&m<=3&&(!
(text1.getText().equals("")))){if(text1.getText().equals(s)){
i=1;
JOptionPane.showMessageDialog(this,"口令正确,请选择菜单栏的操作",
"正确",JOptionPane.INFORMATION_MESSAGE);
text1.setEnabled(false);text1.setVisible(false);a22.setVisible(true);a2.setVisible(false);
}else{
m++;
JOptionPane.showMessageDialog(this,"您输入的口令不正确","警告",JOptionPane.WARNING_MESSAGE);
text1.setText(null);
}
}
if(m>3){
JOptionPane.showMessageDialog(this,"您三次口令错误,确定后退出!
","警告",JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
}
if(i==1){
if(e.getSource()==m1){Form2s1=newForm2();s1.setVisible(true);
}elseif(e.getSource()==m2){
Form3f1=newForm3();
f1.setTitle("定点整数单符号位补码加减");f1.setVisible(true);
}elseif(e.getSource()==m3){Form4f2=newForm4();
f2.setTitle("定点整数补乘法");f2.setVisible(true);
}elseif(e.getSource()==m4){Form5f5=newForm5();f5.setVisible(true);
}
}
}
}
}
luojiyunsuan.javapackagecom.ys;importjavax.swing.*;importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.SwingUtilities;importjava.awt.TextField;
classForm2extendsFrameimplementsMouseListener{Buttonbutton1;
Buttonbutton2;Buttonbutton3;Buttonbutton4;Buttonbutton5;Buttonbutton6;Labellabel1;Labellabel2;Labellabel3;Labellabel4;Labellabel5;Labellabel6;Labellabel7;TextFieldtext1;TextFieldtext2;TextFieldtext3;Strings,s1,temp;intn1,i,j;
chara[];
publicForm2(){setTitle("form2");
button1=newButton("输入");button2=newButton("原-->真值");button3=newButton("反-->真值");button4=newButton("补-->真值");button5=newButton("移-->真值");button6=newButton("返回");
label1=newLabel("机器数的真值还原(定点整数)");Fontf1=newFont("",Font.TRUETYPE_FONT,25);
label1.setFont(f1);
label2=newLabel("请输入机器数:
");label3=newLabel("真值还原结果为:
");text1=newTextField(8);
26
text2=newTextField(10);text2.setEditable(false);
BoxbaseBox,box1,box2,box3,box4,box5;box1=Box.createHorizontalBox();box1.add(label1);
box2=Box.createHorizontalBox();box2.add(label2);box2.add(Box.createHorizontalStrut(10));box2.add(text1);box2.add(Box.createHorizontalStrut(10));box3=Box.createHorizontalBox();box3.add(label3);box3.add(Box.createHorizontalStrut(10));box3.add(text2);box3.add(Box.createHorizontalStrut(10));box4=Box.createHorizontalBox();
box5=Box.createHorizontalBox();
box5.add(button1);box5.add(Box.createHorizontalStrut(20));box5.add(button2);box5.add(Box.createHorizontalStrut(10));box5.add(button3);box5.add(Box.createHorizontalStrut(10));box5.add(button4);box5.add(Box.createHorizontalStrut(10));box5.add(button5);box5.add(Box.createHorizontalStrut(10));box5.add(button6);box5.add(Box.createHorizontalStrut(10));baseBox=Box.createVerticalBox();baseBox.add(box1);baseBox.add(Box.createVerticalStrut(10));baseBox.add(box2);baseBox.add(Box.createVerticalStrut(10));baseBox.add(box3);baseBox.add(Box.createVerticalStrut(10));baseBox.add(box4);baseBox.add(Box.createVerticalStrut(10));baseBox.add(box5);baseBox.add(Box.createVerticalStrut(10));setLayout(newFlowLayout());add(baseBox);text1.addMouseListener(this);text2.addMouseListener(this);button1.addMouseListener(this);button2.addMouseListener(this);button3.addMouseListener(this);button4.addMouseListener(this);button5.addMouseListener(this);button6.addMouseListener(this);addMouseListener(this);
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){System.exit(0);
}
});
setBounds(200,300,500,300);
setVisible(true);
}
publicvoidmousePressed(MouseEvente){
}
publicvoidmouseReleased(MouseEvente){
}
publicvoidmouseEntered(MouseEvente){
}
publicvoidmouseExited(MouseEvente){
}
publicvoidmouseMoved(MouseEvente){
}
publicvoidmouseDragged(MouseEvente){
}
publicvoidmouseClicked(MouseEvente){Componentcom=null;
if(e.getSource()==button2){
com=(Component)e.getSource();
e=SwingUtilities.convertMouseEvent(com,e,this);Strings=text1.getText();
booleanboo=s.startsWith("0",0);if(boo==true){
n1=s.length();
s1=s.substring(1,n1);text2.setText("+"+s1);
}else{
n1=s.length();
s1=s.substring(1,n1);text2.setText("-"+s1);
}
}elseif(e.getSource()==button1){text1.setText("");
}
if(e.getSource()==button3){s=text1.getText();
booleanboo=s.startsWith("0",0);if(boo==true){
n1=s.length();
s1=s.substring(1,n1);text2.setText("+"+s1);
}else{
n1=s.length();
s1=s.substring(1,n1);
chara[]=s1.toCharArray();
for(i=0;i<=a.length-1;i++){if(a[i]=='0')
a[i]='1';
elseif(a[i]=='1')
a[i]='0';
}
for(i=0;i<=a.length-1;i++){s1=String.valueOf(a);
}
text2.setText("-"+s1);
}
}
if(e.getSource()==button4){
s=text1.getText();
booleanboo=s.startsWith("0",0);if(boo==true){
n1=s.length();
s1=s.substring(1,n1);text2.setText("+"+s1);
}else{
n1=s.length();
s1=s.substring(1,n1);
j=s1.lastIndexOf("1")+1;s1=s.substring(1,j);
chara[]=s1.toCharArray();
for(i=0;i<=a.length-1;i++){if(a[i]=='0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 原理 算法 实现
![提示](https://static.bingdoc.com/images/bang_tan.gif)