计算机组成原理算法实现 四,计算机组成原理算法实现(四)的代码.doc

44cb7578e1df5412b94317daaa3307ba.gif计算机组成原理算法实现(四)的代码.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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

bb6249c6567dd4384e6ab3556cfc22ed.gif 

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

关于本文

本文标题:计算机组成原理算法实现(四)的代码.doc

链接地址:https://www.renrendoc.com/p-47397514.html

计算机组成原理算法实现代码及报告 1)系统进入(主)窗体的设计:菜需要在输入口令正确后方可激活使用。口令输入错误时要给出重新输入口令的提示,三次口令输入错误应该禁止使用。 有个菜,分别是“逻辑运算”、“进行定点符号补码加减法”、“定点原码乘法”和“浮点加减运算”口令输入正确后菜激活,按相应菜进入相应窗口。 (2)选择主窗体中“逻辑运算”时进入逻辑运算窗体: ①两个输入框各输入一个; ②一个结果输出框输出结果; ③八个按钮如下: 按“输入”将输入焦点设置为最上面的一个文本框上。依次输入两个(或一个)二进制(如110101或110101) 按“逻辑非”、“逻辑加”、“逻辑乘”或“逻辑异”按扭中的任一个后,将在第三个文本框中显示对应操作的结果。 选择“返回”按扭时回到主窗体 (3)选择主窗体中“进行定点符号补码加减法”时进入进行定点符号补码加减法窗体: ①两个输入框各输入一个; ②两个结果输出框分别输出加法结果和减法结果; ③个按钮 按“输入”将输入焦点设置为最上面的一个文本框上依次输入两个(或一个)二进制(如110101或110101)其中第一符号0为正1为负 按“加法”后在加法结果输出框中显示对应操作的结果 按“减法”后在减法结果输出框中显示对应操作的结果 按“返回”按扭时回到主窗体 (4)选择主窗体中“定点原码乘法”时进入进行定点原码乘法窗体: ①两个输入框各输入一个; ②一个结果输出框输出结果; ③三个按钮 按“输入”将输入焦点设置为最上面的一个文本框上依次输入两个(或一个)二进制(如110101或110101) 按“乘法”后在结果输入框中显示对应操作的结果 按“返回”按扭时回到主窗体 (5)选择主窗体中“浮点加减运算”时进入浮点加减运算窗体: ①个输入框分别输入第一个的阶码和尾及第二个的阶码和尾; ②个个结果输出框分别输出加法结果的阶码和尾及减法结果的阶码和尾; ③个按钮 按“输入”将输入焦点设置为最上面的一个文本框上依次输入二进制 按“加法”后在加法结果输出框中显示对应操作的结果 按“减法”后在减法结果输出框中显示对应操作的结果 按“返回”按扭时回到主窗体
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值