定点小数组成原理设计讲解.docx
- 文档编号:2022418
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:33
- 大小:340.98KB
定点小数组成原理设计讲解.docx
《定点小数组成原理设计讲解.docx》由会员分享,可在线阅读,更多相关《定点小数组成原理设计讲解.docx(33页珍藏版)》请在冰点文库上搜索。
计算机组成原理算法实现
(二)
1、设计目的
本课程设计是在学完本课程教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的计算机组成原理课程基本知识,进一步领会计算机组成原理的一些算法,并进行具体实现,提高分析问题、解决问题的综合应用能力。
2、设计内容
能够实现定点小数的机器数表示、定点系哦啊书的变形补码加减运算、定点小数的原码一位乘法运算和浮点数的加减运算。
3、实现方法
3.1系统目标
本程序含有以下几个功能模块,分别能够实现如设计内容所设计的功能。
共有5个类,各类之间的关系如图3-1所示:
计算机组成原理课程设计
计算机组成原理算法实现
(二)
输入口令
浮点数的加减运算
定点小数的原码乘法
定点小数的单符号位补码加减运算
定点小数单符号转换
返回
移码显示
补码显示
反码显示
原码显示
输入一个带符号的二进制数
依次输入两个单符号二进制数
依次输入两个数的阶码和尾数
图3-1各类间的关系
依次输入两个单符号二进制数
返回
减法尾数显示
减法介码显示
加法尾数显示
加法介码显示
返回
乘法结果显示
返回
加法结果显示
系统流程图如图3-2所示:
开 始
判断口令是否正
确
是否正确
重新输入<=3次
浮点数加减法
定点小数的原码码乘法
定点小数的单符号位补码加减运算
定点小数单符号位转换
选择界面
图3-2系统流程图
31
3.2主体功能
Xiangmu.java
该java文件为整个程序的主类。
Ddxs.java
实现定点小数的转换
Bmjj.java
实现定点小数的单符号位补码加减运算
Ymcf.java
实现定点小数的原码乘法运算。
Fdjj.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浮点数的加减运算
4、设计小结
通过这次的计算机组成原理的课程设计,使我对计算机的认识有了更进一步的加深和认知。
在这为期一周的课程设计的期间内,在进行课程设计的过程中,我不仅巩固了以往所学过的知识,还学到了许多在课堂上所学不到的东西,比如动手能力,实际问题的解决能力和与团队中成员的团队协作与配合的能力,这都使我受益匪浅。
当然,在这个过程中,也有许多问题与困难出现。
有的经过自己的思考或与他人合作能得以解决,有的也的确费了一些周折。
但无论如何,这次对于课题的能够实现定点小数转换、定点小数的单符号位补码加减运算、定点小数乘法运算和浮点数的加减运算的设计总体来说还是比较令人满意的,不仅用到了课堂上所学到的知识,还加入了自己的一些想法,而且在对编程这一方面也有了很多新的感悟与提高。
不得不说是获益良多。
经过了这次的课程设计,我想,对于我日后的计算机的相关的学习肯定会有诸多助益与影响,为将来的学习生活打下了坚实的基础。
附录代码:
Xiangmu.java
packagexiangmu;publicclassXiangmu{
publicstaticvoidmain(String[]args){
Window win=newWindow();
}
}
Bmjj.java
packagexiangmu;
/**
*
*@authorpc
*/importjava.lang.Object;importjava.awt.*;
importjava.awt.event.*;importjavax.swing.*;
classBmjjextendsJFrameimplementsActionListener{JTextFieldtxt1,txt2,txt3,txt4;
JButtonb1,b2,b3,b4;publicBmjj(){
this.setBounds(400,100,600,400);this.setLayout(null);
this.setResizable(false);//窗口大小不许改变JLabellabel1=newJLabel("定点小数的变形补码加
减运算");
label1.setFont(newFont("宋体",Font.BOLD,26));label1.setBounds(110,1,380,100);
//Label
JLabellabel2=newJLabel("请输入第一个数:
");label2.setFont(newFont("宋体",Font.BOLD,15));
//改变字体大小
label2.setBounds(130,100,150,30);
JLabellabel5=newJLabel("请输入第二个数:
");label5.setFont(newFont("宋体",Font.BOLD,15));
//改变字体大小
label5.setBounds(130,150,150,30);JLabellabel3=newJLabel("加法结果为:
");
label3.setFont(newFont("宋体",Font.BOLD,15));
//改变字体大小
label3.setBounds(157,200,100,30);JLabellabel4=newJLabel("减法结果为:
");
label4.setFont(newFont("宋体",Font.BOLD,15));
//改变字体大小
label4.setBounds(157,250,100,30);
//TextField
txt1=newJTextField("");txt1.setBounds(257,100,150,20);
txt2=newJTextField("");txt2.setBounds(257,150,150,20);
txt3=newJTextField("");txt3.setBounds(257,200,150,20);
txt4=newJTextField("");txt4.setBounds(257,250,150,20);
txt3.setEditable(false);txt4.setEditable(false);b1=newJButton("输入");
//BUtton
b1.setFont(newFont("宋体",Font.BOLD,15));b1.setBounds(100,320,80,30);b1.addActionListener((ActionListener)this);b2=newJButton("加法");
b2.setFont(newFont("宋体",Font.BOLD,15));b2.setBounds(200,320,80,30);b2.addActionListener((ActionListener)this);b3=newJButton("减法");
b3.setFont(newFont("宋体",Font.BOLD,15));b3.setBounds(300,320,80,30);b3.addActionListener((ActionListener)this);b4=newJButton("返回");
b4.setFont(newFont("宋体",Font.BOLD,15));b4.setBounds(400,320,80,30);b4.addActionListener((ActionListener)this);
this.add(label1);this.add(label5); this.add(txt1);this.add(label2); this.add(txt2);this.add(label3); this.add(txt3);this.add(label4); this.add(txt4);
this.add(b1);this.add(b2);this.add(b3);this.add(b4);
this.setVisible(true);this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
@Override
publicvoidactionPerformed(ActionEvente){Strings1=txt1.getText().trim();
Strings2=txt2.getText().trim();if(e.getSource()==b1){txt1.setText(null);txt2.setText(null);txt3.setText(null);txt4.setText(null);txt1.requestFocusInWindow();
}elseif(e.getSource()==b2){
jiafa(s1,s2);
}elseif(e.getSource()==b3){
jianfa(s1,s2);
}elseif(e.getSource()==b4){
// Windowwin=newWindow();
this.dispose();
}
}
privatevoidjiafa(Strings1,Strings2){Strings10=buma(s1);
Strings20=buma(s2);
StringBuffers11=newStringBuffer(s10);StringBuffers22=newStringBuffer(s20);charjinwei='0';
//补位if(s11.length()>s22.length()){
for(inti=s11.length()-s22.length();i>0;i--){
s22.append('0');
}
}elseif(s11.length() s11.length();i>0;i--){ s11.append('0'); } } //补位结束 for(inti=s11.length()-1;i>=0;i--){ if(s11.charAt(i)=='0'&&s22.charAt(i)=='0'&&jinwei=='0 '){ jinwei='0'; }elseif(s11.charAt(i)=='0'&&s22.charAt(i)=='0'&&jinwei=='1 '){ s11.setCharAt(i,'1');jinwei='0'; }elseif(s11.charAt(i)=='0'&&s22.charAt(i)=='1'&&jinwei=='0 '){ s11.setCharAt(i,'1');jinwei='0'; }elseif(s11.charAt(i)=='0'&&s22.charAt(i)=='1'&&jinwei=='1 '){ jinwei='1'; }elseif(s11.charAt(i)=='1'&&s22.charAt(i)=='0'&&jinwei=='0 '){ jinwei='0'; }elseif(s11.charAt(i)=='1'&&s22.charAt(i)=='0'&&jinwei=='1 '){ s11.setCharAt(i,'0'); jinwei='1'; }elseif(s11.charAt(i)=='1'&&s22.charAt(i)=='1'&&jinwei=='0 '){ s11.setCharAt(i,'0');jinwei='1'; }elseif(s11.charAt(i)=='1'&&s22.charAt(i)=='1'&&jinwei=='1 '){ s11.setCharAt(i,'1'); jinwei='1'; } } //判断是否溢出 if(s11.charAt(0)=='0'&&s11.charAt (1)=='1'||s11.charAt(0)=='1'&&s11.charAt (1)=='0'){ JOptionPane.showMessageDialog(rootPane,"溢出"); } //判断正负号if(s11.charAt(0)=='0'&&s11.charAt (1)=='0'){ s11.setCharAt(0,'+'); }elseif(s11.charAt(0)=='1'&&s11.charAt (1)=='1'){ s11.setCharAt(0,'-'); s11.setCharAt(1,'0'); } Stringshu=s11.toString();txt3.setText(shu); } privatevoidjianfa(Strings1,Strings2){ // StringBuffers110=newStringBuffer(s1);StringBuffers220=newStringBuffer(s2); if(s220.charAt(0)=='-'){ s220.setCharAt(0,'+'); }elseif(s220.charAt(0)=='+'){ s220.setCharAt(0,'-'); } s2=s220.toString(); Strings10=buma(s1);Strings20=buma(s2); StringBuffers11=newStringBuffer(s10);StringBuffers22=newStringBuffer(s20);charjinwei='0'; //补位if(s11.length()>s22.length()){ for(inti=s11.length()-s22.length();i>0;i--){ s22.append('0'); } }elseif(s11.length() s11.length();i>0;i--){ s11.append('0'); } } //补位结束 for(inti=s11.length()-1;i>=0;i--){ if(s11.charAt(i)=='0'&&s22.charAt(i)=='0'&&jinwei=='0 '){ jinwei='0'; }elseif(s11.charAt(i)=='0'&&s22.charAt(i)=='0'&&jinwei=='1 '){ s11.setCharAt(i,'1');jinwei='0'; }elseif(s11.charAt(i)=='0'&&s22.charAt(i)=='1'&&jinwei=='0 '){ s11.setCharAt(i,'1');jinwei='0'; }elseif(s11.charAt(i)=='0'&&s22.charAt(i)=='1'&&jinwei=='1 '){ jinwei='1'; }elseif(s11.charAt(i)=='1'&&s22.charAt(i)=='0'&&jinwei=='0 '){ jinwei='0'; }elseif(s11.charAt(i)=='1'&&s22.charAt(i)=='0'&&jinwei=='1 '){ s11.setCharAt(i,'0');jinwei='1'; }elseif(s11.charAt(i)=='1'&&s22.charAt(i)=='1'&&jinwei=='0 '){ s11.setCharAt(i,'0');jinwei='1'; }elseif(s11.charAt(i)=='1'&&s22.charAt(i)=='1'&&jinwei=='1 '){ s11.setCharAt(i,'1'); jinwei='1'; } } //判断是否溢出 if(s11.charAt(0)=='0'&&s11.charAt (1)=='1'||s11.charAt(0)=='1'&&s11.charAt (1)=='0'){ JOptionPane.showMessageDialog(rootPane,"溢出"); } //补码判断正负号if(s11.charAt(0)=='0'&&s11.charAt (1)=='0'){ s11.setCharAt(0,'+'); }elseif(s11.charAt(0)=='1'&&s11.charAt (1)=='1'){ s11.setCharAt(0,'-'); s11.setCharAt(1,'0'); } Stringshu=s11.toString();shu=buma(shu); StringBuffershu1=newStringBuffer(shu); //输出判断正负号if(shu1.charAt(0)=='0'&&shu1.charAt (1)=='0'){ shu1.setCharAt(0,'+'); }elseif(shu1.charAt(0)=='1'&&shu1.charAt (1)=='1'){ shu1.setCharAt(0,'-'); shu1.setCharAt(1,'0'); } Stringshu11=shu1.toString();txt4.setText(shu11); } privateStringbuma(Strings1){Stringshu=null; charjinwei='1'; StringBuffers=newStringBuffer(s1);if(s.charAt(0)=='+'){ s.setCharAt(0,'0'); // if(s.charAt (1)=='0') s.deleteCharAt (1);shu=s.toString(); }elseif(s.charAt(0)=='-'){s.setCharAt(0,'1'); for(inti=s.length()-1;i>1;i--){ if(s.charAt(i)=='1') { s.setCharAt(i,'0'); }elseif(s.charAt(i)=='0') { s.setCharAt(i,'1'); } } for(inti=s.length()-1;i>1;i--){if(s.charAt(i)=='0'&&jinwei=='0'){ jinwei='0'; }else if(s.charAt(i)=='0'&&jinwei=='1'){ jinwei='0';s.setCharAt(i,'1'); }elseif(s.charAt(i)=='1'&&jinwei=='0'){ jinwei='0'; }elseif(s.charAt(i)=='1'&&jinwei=='1'){ jinwei='1';s.setCharAt(i,'0'); } } // if(s.charAt (1)=='0')s.deleteCharAt (1);s.setCharAt(1,'1'); shu=s.toString(); } returnshu; } } Ddjs.javapackagexiangmu; /** * *@authorpc */importjava.lang.Object;importjava.awt.*; importjava.awt.event.*;importjavax.swing.*; classDdxsextendsJFrameimplementsActionListener{JLabellabel1,label3,label2; JTextFieldf1,f2; JButtonshuru,yma,fanma,buma,yima,fanhui;publicDdxs(){ this.setBounds(400,100,600,400);this.setLayout(null); this.setResizable(false);//窗口大小不许改变fanhui=newJButton("返回");fanhui.setFont(newFont("宋体",Font.BOLD,15));fanhui.setBounds(500,320,80,30); fanhui.addActionListener((ActionListener) this); yma=newJButton("原码"); yma.setFont(newFont("宋体",Font.BOLD,15));yma.setBounds(100,320,80,30);yma.addActionListener((ActionListener)this); fanma=newJButton("反码"); fanma.setFont(newFont("宋体",Font.BOLD,15));fanma.setBounds(200,320,80,30);fanma.addActionListener((ActionListener) this);//监听 buma=newJButton("补码"); buma.setFont(newFont("宋体",Font.BOLD,15));buma.setBounds(300,32
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 定点 小数 组成 原理 设计 讲解