计算机组成原理算法实现(四)的代码.doc
上传人:缘***
文档编号:47397514
上传时间:2020-02-04
格式:DOC
页数:27
大小:124.01KB
下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
2.下载的文档,不会出现我们的网址水印。
3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
文档包含非法信息?点此举报后获取现金奖励!
下载文档到电脑,查找使用更方便
10
积分
还剩页未读,继续阅读
关 键 词:计算机
组成
原理
算法
实现
代码
资源描述:
《计算机组成原理》课程设计报告
源代码
口令输入界面
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Computer extends Frame implements ActionListener/*主窗口界面*/
{
MenuBar bar;
Menu Huanyuan,Bumajiajian,Yuanmacheng,Fudianjiajian,help;
MenuItem t1,t2,t3,t4,t5;
TextField password;
Button ok;
int count=0,m=1;
Huanyuan biao;
Bumajiajian bian;
Yuanmacheng yuan;
Fudianjiajian fu;
Computer(String s)
{
super(s);
biao=new Huanyuan(this,"机器数的真值还原(定点小数)",true);
bian=new Bumajiajian(this,"定点小数单符号位补码加减运算",true);
yuan=new Yuanmacheng(this,"定点小数原码乘法",true);
fu=new Fudianjiajian(this,"浮点数的加减法",true);
bar=new MenuBar();
t1=new MenuItem("定点小数真值还原");
t2=new MenuItem("定点小数单符号位补码加减法");
t3=new MenuItem("定点小数原码乘法");
t4=new MenuItem("浮点加减法");
t5=new MenuItem("帮助");
t1.addActionListener(this);
t2.addActionListener(this);
t3.addActionListener(this);
t4.addActionListener(this);
t5.addActionListener(this);
Huanyuan=new Menu("定点小数真值还原");
Bumajiajian=new Menu("定点小数单符号位补码加减法");
Yuanmacheng=new Menu("定点小数原码乘法");
Fudianjiajian=new Menu("浮点加减法");
help=new Menu("帮助");
Huanyuan.add(t1);
Bumajiajian.add(t2);
Yuanmacheng.add(t3);
Fudianjiajian.add(t4);
help.add(t5);
Huanyuan.setEnabled(false);
Bumajiajian.setEnabled(false);
Yuanmacheng.setEnabled(false);
Fudianjiajian.setEnabled(false);
help.setEnabled(false);
bar.add(Huanyuan);
bar.add(Bumajiajian);
bar.add(Yuanmacheng);
bar.add(Fudianjiajian);
bar.add(help);
setMenuBar(bar);
Label label=new Label("计算机组成原理算法实现(四)");
label.setFont(new Font("TimesRoman",Font.BOLD,24));
Panel panel0=new Panel();
panel0.add(label);
ok=new Button("确 认");
ok.addActionListener(this);
password=new TextField(20);
password.setEchoChar(*);
password.addActionListener(this);
Box box=Box.createVerticalBox();
box.add(panel0);
Panel panel1=new Panel();
panel1.add(new Label("输入口令:"));
panel1.add(password);
box.add(panel1);
Panel panel2=new Panel();
panel2.add(ok);
box.add(panel2);
add(box);
setBounds(100,100,510,350);
setVisible(true);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
validate();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==ok&&m<=3)
{
if((password.getText().equals("fengchen")))
{
Huanyuan.setEnabled(true);
Bumajiajian.setEnabled(true);
Yuanmacheng.setEnabled(true);
Fudianjiajian.setEnabled(true);
help.setEnabled(true);
JOptionPane.showMessageDialog(this,"口令正确!","正确",JOptionPane.PLAIN_MESSAGE);
}
else
{
JOptionPane.showMessageDialog(this,"密码错误!","错误",JOptionPane.ERROR_MESSAGE);
m++;
password.setText(null);
password.requestFocusInWindow();
}
}
if(m==4)
{
password.setText(null);
password.setEditable(false);
JOptionPane.showMessageDialog(this,"您已被禁用!","错误",JOptionPane.ERROR_MESSAGE);
}
if(e.getSource()==t1)
{
biao.setVisible(true);
}
if(e.getSource()==t2)
{
bian.setVisible(true);
}
if(e.getSource()==t3)
{
yuan.setVisible(true);
}
if(e.getSource()==t4)
{
fu.setVisible(true);
}
if(e.getSource()==t5)
{
JOptionPane.showMessageDialog(this,"参考《计算机组成原理与结构》\n《Java2程序设计》");
}
}
}
定点小数真值还原
import java.awt.*;
import java.awt.event.*;
import javax.swing.Box;
import javax.swing.JOptionPane;
public class Huanyuan extends Dialog implements ActionListener
{
String number,result;
TextField text1,text2;
Button input,yuan,fan,bu,yi,back;
Label label;
Huanyuan(Frame f,String s,boolean b)
{
super(f,s,b);
label=new Label(" 真值还原结果为: ");
text1=new TextField(20);
text2=new TextField(20);
text2.setEditable(false);
input=new Button("输入");
yuan=new Button("原->真值");
fan=new Button("反->真值");
bu=new Button("补->真值");
yi=new Button("移->真值");
back=new Button("返回");
input.addActionListener(this);
yuan.addActionListener(this);
fan.addActionListener(this);
bu.addActionListener(this);
yi.addActionListener(this);
back.addActionListener(this);
Panel p1,p2,p3,p4;
p1=new Panel();
p2=new Panel();
p3=new Panel();
p4=new Panel();
Box box=Box.createVerticalBox();
Label label1=new Label("机器数的真值还原(定点小数)");
label1.setFont(new Font("楷体",Font.BOLD,20));
p1.add(label1);
p2.add(new Label("请输入机器数:"));
p2.add(text1);
p3.add(label);
p3.add(text2);
p4.add(input);
p4.add(yuan);
p4.add(fan);
p4.add(bu);
p4.add(yi);
p4.add(back);
box.add(p1);
box.add(p2);
box.add(p3);
box.add(p4);
add(box);
setBounds(200,200,500,300);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
setVisible(false);
}
});
validate();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==input)
{
text1.setText(null);
text2.setText(null);
text1.requestFocusInWindow();
}
if(e.getSource()==yuan)/*求原->真值*/
{
number=text1.getText();
if(number.startsWith("0"))
{ result=number.replaceFirst("0","+0");
text2.setText(result);
}
else if(number.startsWith("1"))
{ result=number.replaceFirst("1","-0");
text2.setText(result);
}
}
if(e.getSource()==fan)/*求反->真值*/
{
number=text1.getText();
if(number.startsWith("0"))
{ result=number.replaceFirst("0","+0");
text2.setText(result);
}
else if(number.startsWith("1"))
{ char c[]=number.toCharArray();
for(int i=0;i真值*/
{
number=text1.getText();
if(number.startsWith("1"))
{ result=number.replaceFirst("1","+0");
text2.setText(result);
}
else if(number.startsWith("0"))
{ int j=number.lastIndexOf("1");
char a[]=number.toCharArray();
for(int i=0;i=0;j--)//计算两个数的补码加法
{ if(a[j]==0 && b[j]==0)
{ c[j]=0;
d[j]=0;
}
else if(a[j]==0&& b[j]==1)
{ c[j]=1;
d[j]=0;
}
else if(a[j]==1 && b[j]==0)
{ c[j]=1;
d[j]=0;
}
else if(a[j]==1 && b[j]==1)
{ c[j]=0;
d[j]=1;
}
else if(a[j]==. && b[j] ==.)
{ c[j]=.;
d[j]=.;
}
}
for(int k=d.length-1;k>=1;k--)
{if(d[k]==1 && c[k-1]==0)
{ c[k-1]=1;
}
else if(d[k]==1 && c[k-1]==1)
{ c[k-1]=0;
d[k-1]=1;
}
else if(d[k]==1 && c[k-1]==.&& c[k-2]==0)
{ c[k-2]=1;
}
else if(d[k]==1 && c[k-1]==.&& c[k-2]==1)
{ c[k-2]=0;
d[0]=1;
}
}
if((d[0]==1&& d[2]==1)||(d[0]==0&& d[2]==0))
{if(c[0]==0)
{ jia=new String(c);
jia=jia.replaceFirst("0","+0");
addResult.setText(jia);
}
else if(c[0]==1)
{ jia=new String(c);
int j=jia.lastIndexOf("1");
for(int i=0;i=0;j--)//计算两个数的补码减法
{ if(a[j]==0 && b[j]==0)
{ c[j]=0;
d[j]=0;
}
else if(a[j]==0&& b[j]==1)
{ c[j]=1;
d[j]=0;
}
else if(a[j]==1 && b[j]==0)
{ c[j]=1;
d[j]=0;
}
else if(a[j]==1 && b[j]==1)
{ c[j]=0;
d[j]=1;
}
else if(a[j]==. && b[j] ==.)
{ c[j]=.;
d[j]=.;
}
}
for(int k=d.length-1;k>=1;k--)
{if(d[k]==1 && c[k-1]==0)
{ c[k-1]=1;
}
else if(d[k]==1 && c[k-1]==1)
{ c[k-1]=0;
d[k-1]=1;
}
else if(d[k]==1 && c[k-1]==.&& c[k-2]==0)
{ c[k-2]=1;
}
else if(d[k]==1 && c[k-1]==.&& c[k-2]==1)
{ c[k-2]=0;
d[k-2]=1;
}
}
if((d[0]==1&& d[2]==1)||(d[0]==0&& d[2]==0))
{ if(c[0]==0)
{ jian=new String(c);
jian=jian.replaceFirst("0","+0");
subResult.setText(jian);
}
else if(c[0]==1)
{ jian=new String(c);
int j=jian.lastIndexOf("1");
for(int i=0;i0)
{
if(a1[r-1]==0&&a2[r-1]==0&&cf==0){jg[r-1]=0;cf=0;}
else if((a1[r-1]==0&&a2[r-1]==0&&cf==1)||
(a1[r-1]==0&&a2[r-1]==1&&cf==0)||
(a1[r-1]==1&&a2[r-1]==0&&cf==0)){jg[r-1]=1;cf=0;}
else if((a1[r-1]==0&&a2[r-1]==1&&cf==1)||
(a1[r-1]==1&&a2[r-1]==0&&cf==1)||
(a1[r-1]==1&&a2[r-1]==1&&cf==0)){ jg[r-1]=0;cf=1;}
else if(a1[r-1]==1&&a2[r-1]==1&&cf==1){jg[r-1]=1;cf=1;}
else {jg[r-1]=0;}
r--;
}
result=new String(jg);
return result;
}
//实现两数的相乘
public String mul(String ss1,String ss2 )
{
char a[]=ss1.toCharArray();
char b[]=ss2.toCharArray();
int n1=ss1.length();int n2=ss2.length();
char mul[]=new char[n1+n2-2];int m=mul.length;
char temp1[]=new char[n1+n2-4];char temp2[]=new char[n1+n2-4];
//实现积的符号位和小数点
if(a[0]==b[0])mul[0]=0;
else mul[0]=1;
mul[1]=a[1];
for(int g=0;g=2;y--)
{
if(b[y]==1) ss1.getChars(2, n1, temp2, 0);
else {for(int g=0;g=2;i--)
{
temp1[i-1]=temp1[i-2];
}
// String p3=new String(temp1);
if(cf==0) temp1[0]=0;
else temp1[0]=1;
//System.out.println("4:"+p3);
}
String g2=new String(temp1);
g2.getChars(0,g2.length(), mul, 2);
String g3=new String(mul);
return g3;
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b1)
{ me4=1;
t1.requestFocusInWindow();
t2.requestFocusInWindow();
t1.setText("");
t2.setText("");
}
else if(me4==1)
{
if(e.getSource()==b2)
{
String tg1=work1();
String tg2=work2();
String tg3=mul(tg1,tg2);
t3.setText(tg3);
}
else if(e.getSource()==b3)
{
setVisible(false);
}
}
}
}
浮点数加减
import java.awt.*;
import java.awt.event.*;
import javax.swing.Box;
import javax.swing.
展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:计算机组成原理算法实现(四)的代码.doc
链接地址:https://www.renrendoc.com/p-47397514.html