计算机组成原理算法实现(四)的代码.doc_第1页
计算机组成原理算法实现(四)的代码.doc_第2页
计算机组成原理算法实现(四)的代码.doc_第3页
计算机组成原理算法实现(四)的代码.doc_第4页
计算机组成原理算法实现(四)的代码.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机组成原理课程设计报告源代码口令输入界面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真值); 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;ic.length;i+) if(ci=1) ci=0; else if(ci=0) ci=1; result=new String(c); String s=result.replaceFirst(0,-0); text2.setText(s); if(e.getSource()=bu) number=text1.getText(); if(number.startsWith(0) result=number.replaceFirst(0,+0); text2.setText(result); else if(number.startsWith(1) int j=number.lastIndexOf(1); char a=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(aj=0 & bj=0) cj=0; dj=0; else if(aj=0& bj=1) cj=1; dj=0; else if(aj=1 & bj=0) cj=1; dj=0; else if(aj=1 & bj=1) cj=0; dj=1; else if(aj=. & bj =.) cj=.; dj=.; for(int k=d.length-1;k=1;k-) if(dk=1 & ck-1=0) ck-1=1; else if(dk=1 & ck-1=1) ck-1=0; dk-1=1; else if(dk=1 & ck-1=.& ck-2=0) ck-2=1; else if(dk=1 & ck-1=.& ck-2=1) ck-2=0; d0=1; if(d0=1& d2=1)|(d0=0& d2=0) if(c0=0) jia=new String(c); jia=jia.replaceFirst(0,+0); addResult.setText(jia); else if(c0=1) jia=new String(c); int j=jia.lastIndexOf(1); for(int i=0;ij;i+) if(ci=1) ci=0; else if(ci=0) ci=1; jia=new String(c); jia=jia.replaceFirst(0,-0); addResult.setText(jia); if(d0=0& d2=1)|(d0=1& d2=0) addResult.setText(结果溢出); JOptionPane.showMessageDialog(this,加法结果溢出,不正确!,错误,JOptionPane.ERROR_MESSAGE); if(e.getSource()=sub) shu1=text1.getText(); shu2=text2.getText(); char a=shu1.toCharArray(); char b=shu2.toCharArray(); int m=shu2.lastIndexOf(1); for(int i=0;i=0;j-)/计算两个数的补码减法 if(aj=0 & bj=0) cj=0; dj=0; else if(aj=0& bj=1) cj=1; dj=0; else if(aj=1 & bj=0) cj=1; dj=0; else if(aj=1 & bj=1) cj=0; dj=1; else if(aj=. & bj =.) cj=.; dj=.; for(int k=d.length-1;k=1;k-) if(dk=1 & ck-1=0) ck-1=1; else if(dk=1 & ck-1=1) ck-1=0; dk-1=1; else if(dk=1 & ck-1=.& ck-2=0) ck-2=1; else if(dk=1 & ck-1=.& ck-2=1) ck-2=0; dk-2=1; if(d0=1& d2=1)|(d0=0& d2=0) if(c0=0) jian=new String(c); jian=jian.replaceFirst(0,+0); subResult.setText(jian); else if(c0=1) jian=new String(c); int j=jian.lastIndexOf(1); for(int i=0;i0) if(a1r-1=0&a2r-1=0&cf=0)jgr-1=0;cf=0;else if(a1r-1=0&a2r-1=0&cf=1)|(a1r-1=0&a2r-1=1&cf=0)|(a1r-1=1&a2r-1=0&cf=0)jgr-1=1;cf=0;else if(a1r-1=0&a2r-1=1&cf=1)|(a1r-1=1&a2r-1=0&cf=1)|(a1r-1=1&a2r-1=1&cf=0) jgr-1=0;cf=1;else if(a1r-1=1&a2r-1=1&cf=1)jgr-1=1;cf=1;else jgr-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 charn1+n2-2;int m=mul.length;char temp1=new charn1+n2-4;char temp2=new charn1+n2-4;/实现积的符号位和小数点if(a0=b0)mul0=0;else mul0=1;mul1=a1; for(int g=0;gn1+n2-4;g+)temp1g=0;for(int g=0;g=2;y-) if(by=1) ss1.getChars(2, n1, temp2, 0); else for(int g=0;gn1+n2-4;g+)temp2g=0; g1=add1(temp1,temp2);/得到两个数的和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论