ImageVerifierCode 换一换
格式:DOCX , 页数:65 ,大小:278.16KB ,
资源ID:9740807      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9740807.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机组成原理 课程设计.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机组成原理 课程设计.docx

1、计算机组成原理 课程设计计算机组成原理课程设计报告专业计算机科学与技术学生姓名秦霞班级B计073学号0710604317指导教师张静林完成日期2010年9月盐城工学院信息学院一、课程设计的目的本课程设计是在学完本课程教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的计算机组成原理课程基本知识,进一步领会计算机组成原理的一些算法,并进行具体实现,提高分析问题、解决问题的综合应用能力。二、课程设计的内容1题目:计算机组成原理算法实现(三)2功能:课题能够实现逻辑运算(逻辑非、逻辑加、逻辑乘、逻辑异)、定点整数的单符号位补码加减运算、定点整数的原码一位乘法运算和浮点数的加减运算。3

2、实现步骤:(1)系统进入(主)窗体的设计:菜单需要在输入口令正确后方可激活使用。口令输入错误时要给出重新输入口令的提示,三次口令输入错误应该禁止使用。(2)选择主窗体中“逻辑运算”时进入下图所示的窗体:在上面的窗体中按“输入”按扭时,将输入焦点设置为最上面的一个文本框上。依次输入两个(或一个)二进制数(如11001100或00111010)后,按“逻辑非”、“逻辑加”、“逻辑乘”或“逻辑异”按扭中的任一个后,将在第三个文本框中显示对应操作的结果。选择“返回”按扭时回到主窗体。(3)进行定点整数单符号位补码加减法的实现时都是在主窗体选择对应的菜单项后进入对应窗体再进行具体操作。操作时首先选择“输

3、入”按扭输入参与运算的数据,然后再选操作按扭。各自窗体的参考图如下所示:在第一个数中输入+11001100在第二个数中输入-01011100点击加法按钮和减法按钮可得加法结果和减法结果进行定点整数定点整数原码乘法的实现时都是在主窗体选择对应的菜单项后进入对应窗体再进行具体操作。操作时首先选择“输入”按扭输入参与运算的数据,然后再选操作按扭。各自窗体的参考图如下所示:进行定点整数单符号位补码加减法、定点整数原码乘法、浮点加减法的实现时都是在主窗体选择对应的菜单项后进入对应窗体再进行具体操作。操作时首先选择“输入”按扭输入参与运算的数据,然后再选操作按扭。各自窗体的参考图如下所示:如需帮助,可按帮

4、助按钮,得到以下窗口:三、主要技术指标及特点数据表示方法: 计算机中常用的数据表示格式有两种,一是定点格式,二是浮点格式。(1)定点表示:约定机器中所有数据的小数点位置是固定的。由于约定在固定的位置,所以小数点就不再使用记号“.”来表示。 (2)浮点表示:定点数表示的数的范围有限,为了扩展数的表示范围,按照科学记数法表示数据的方式,任何一个二进制数N都可以表示成如下的格式:NM*2eM :尾数,是一个纯小数,决定数据的表示精度 e :指数,又称为阶码,是一个整数,决定数据的表示范围数的机器码表示: 一般书写所表示的数据称为真值,在计算机中为了表示符号位,通常把符号位和数字位一起编码来表示相应的

5、数,形成了各种数据的存储和表示方法,这些编码称为机器码。常用的机器码有原码、反码、补码和移码。(1)原码:原码的数值部分是该数的绝对值,最高位表示符号位,最高位为0是正数,最高位为1是负数。(2)反码:正数的反码等于原码,负数的反码等于除符号位外其余二进制数码0变成1,1变成0。 正数: x反 = x原 = x 负数: 符号位不变,其余变反(3)补码:正数的补码等于原码,负数的补码等于反码加1。 正数: x补= x原 负数: x补= x反 +1定点加、减法运算:结论:任何两数的补码只和等于两数只和的补码v 补码加法 基本公式: x补 + y补 = x+y补 v 补码减法 基本公式: x补 -

6、y补x补 + -y补 当负数用补码表示后,符号位作为数据的一部分一起参加运算,运算器不用考虑参加加法运算的操作数的正负以及结果的正负,任意数的加法就可以化作正数加法来作。v 溢出:在定点数机器中,数的大小超出了定点数能表示的范围,叫溢出。(1)在定点小数机中数的表示范围是-1x1,如果运算过程中出现了大于1或者小于1的情况。(2)在定点整数机(8位)中数的表示范围是-128x127,如果运算过程中出现了大于127或者小于128的情况。双符号位法:将符号位扩展为2位,具体说就是对于正数两个符号位是“00”,对于负数两个符号位是“11”。两个符号位都看作数码一样参加运算。两个数相加后,其结果的符号

7、位出现“01”或“10”两种组合时,表示发生溢出。 符号位“01”,上溢出 符号位“10”,下溢出 符号位“00”或者“11”,未溢出 从补求补的法则是: 对补“包括符号位求反且最末位加1”,即可得到补定点乘法运算 :在定点计算机中,两个原码表示的数相乘的运算规则是:乘积的符号位由两数的符号位按异或运算得到,而乘积的数值部分则是两个正数相乘之积。设n位被乘数和乘数用定点小数表示(定点整数也同样适用)被乘数 原f .n110 乘数 原f .n110 则乘积 原(ff)(0.n110)(0.n110) 式中,f为被乘数符号,f为乘数符号。 机器算法: 机器中一种方法是多次采用”加法移位“的方法来完

8、成,称为串行乘法器,它的硬件结构简单,但是速度慢,目前广泛使用的是流水式阵列乘法器,称为并行乘法器。无符号数m乘以n会产生m*n个位积,出现m+n个列和,并行乘法器的关键是快速产生m*n个位积,对位积进行相加运算产生m+n个列和。第一步:位积的产生观察乘法运算:0*00,0*10,1*00,1*11 相当于:ab所以m*n个位积可以由m*n个与门并行产生。第二步:列和的产生:利用全加器浮点数的加减法运算: 浮点数的加减法运算分为六个步骤:(1)0操作数检查 浮点加减运算过程比定点运算过程复杂。如果判知两个操作数或中有一个数为0,即可得知运算结果而没有必要再进行后续的一系列操作以节省运算时间。0

9、操作数检查步骤则用来完成这一功能。 参加加法运算的数据都是非零,进入下一步。(2)比较价码大小并完成对阶 为了便于直观理解,假设两数均以补码表示,阶码采用双符号位,尾数采用单符号位。 两浮点数进行加减,首先要看两数的阶码是否相同,若二数阶码不同,表示小数点位置没有对齐,此时必须使二数阶码相同,这个过程叫作对阶。对阶操作规定使尾数右移,尾数右移后阶码作相应增加,因此对阶时,总是使小阶向大阶看齐。(3)尾数进行加减运算 对阶结束后,即可进行尾数的求和运算。不论加法运算还是减法运算,都按加法进行操作(减法利用补码减法转换成补码的加法来做),其方法与定点加减法运算完全一样。 (4)结果规格化 a. 采

10、用双符号位表示尾数时,如果两符号位为01或10时,应将结果尾数右移一位,阶码加1(叫“右规”)。 b. 如果尾数最高数值位与符号位相同,应将尾数左移,阶码减,直至数值位最高位与符号位相反(叫“左规”)。(5)舍入运算 在对阶向右规格化,尾数向右移位,这样被右移的尾数的低位部分会被丢掉,从而造成一定误差,要进行舍入处理。简单的舍入方法有两种:一种是“0舍1入”法,即如果右移时被丢掉数位的最高位为0则舍去,为1则将尾数的末位做加加1运算。另一种是“恒置1”法,即只要数位被移掉,就在尾数的末尾恒置1。(6)判断结果是否溢出 阶码为00 011,阶码的符号位为00,根据补码的双符号检测溢出的方法确定阶

11、码不溢出。登陆窗口流程图逻辑运算流程图定点整数单符号位补码加减法流程图定点整数的原码乘法窗体流程图附件主体窗口代码如下:package zcyl3;import java.awt.*;import java.awt.event.*;import javax.swing.JOptionPane;public class MainFrame extends Frame implements ActionListener static int i=0; static int m=1; Label a1,a2,a22; TextField text1; Button button1,m1,m2,m3,

12、m4,m5;Font f; MainFrame(String s) super(s); setLayout(null); f=new Font(楷体,Font.BOLD,20); m1=new Button(逻辑运算); m2=new Button(定点整数单符号位补码加减); m3=new Button(定点整数原码一位乘法); m4=new Button(浮点加减法); m5=new Button(帮助); m1.addActionListener(this); m2.addActionListener(this); m3.addActionListener(this); m4.addAc

13、tionListener(this); m5.addActionListener(this); m1.setBounds(10,30,120,25); m2.setBounds(140,30,150,25); m3.setBounds(300,30,120,25); m4.setBounds(430,30,80,25); m5.setBounds(515,30,80,25); add(m1);add(m2);add(m3);add(m4);add(m5); a1=new Label(计算机组成原理算法实现(三),Label.CENTER); a2=new Label(输入口令(学号):); a

14、22=new Label(密码正确,请选择上面菜单进行操作,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.blue); a22.setVisible(false); tex

15、t1=new TextField(18); text1.setEchoChar(); text1.setBounds(240,200,200,25); button1=new Button(确认); n1.setBounds(270,250,70,30); button1.addActionListener(this); add(a1);add(a2);add(a22);add(text1);add(button1); setBackground(Color.white); setBounds(100,100,610,400); setVisible(true); validate(); ad

16、dWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); public static void main(String args) MainFrame zc=new MainFrame(计算机组成原理); public void actionPerformed(ActionEvent e) String s=new String(2); if(e.getSource()=button1) while(i=0&m3) JOptionPane.showMessage

17、Dialog(this,您三次口令错误,已被禁用,警告,JOptionPane.ERROR_MESSAGE); if(i=1) if(e.getSource()=m1) luojiyunsuan s1=new luojiyunsuan(逻辑运算); s1.setVisible(true); else if(e.getSource()=m2) zhengshujiajian f1=new zhengshujiajian(); f1.setTitle(定点整数单符号位补码加减); f1.setVisible(true); else if(e.getSource()=m3) zhengshuchen

18、gfa f2=new zhengshuchengfa();f2.setTitle(定点整数原码一位乘法);f2.setVisible(true); else if(e.getSource()=m4) fudianyunsuan f5=new fudianyunsuan(浮点加减法); f5.setVisible(true); else if(e.getSource()=m5) Help h1=new Help(帮助); h1.setVisible(true); 逻辑运算代码如下:package zcyl3;import java.awt.*;import java.awt.event.*;im

19、port javax.swing.JOptionPane;public class luojiyunsuan extends Frame implements ActionListener int me=0; Label b1,b2,b3,b4;Font f; TextField t1,t2,t3; Button button1,button2,button3,button4,button5,button6; luojiyunsuan(String s) super(s);setLayout(null);f=new Font(楷体,Font.BOLD,20); b1=new Label( 逻辑

20、运算 ,Label.CENTER); b2=new Label(请输入第一个数:); b3=new Label(请输入第二个数:); b4=new Label(结果); b1.setBounds(180,100,250,40); b1.setFont(f); b1.setBackground(Color.white); b2.setBounds(100,200,120,25); b3.setBounds(100,250,120,25); b2.setBackground(Color.white); b3.setBackground(Color.white); b4.setBounds(100,

21、300,120,25); t1=new TextField(15); t2=new TextField(15); t3=new TextField(15); t1.setBounds(250,200,200,25); t2.setBounds(250,250,200,25); t3.setBounds(250,300,200,25); button1=new Button(输 入);button2=new Button(逻辑非); button3=new Button(逻辑加);button4=new Button(逻辑乘); button5=new Button(逻辑异);button6=n

22、ew Button(返 回); button1.setBounds(80,350,70,25);button2.setBounds(160,350,70,25); button3.setBounds(240,350,70,25);button4.setBounds(320,350,70,25);button5.setBounds(400,350,70,25);button6.setBounds(480,350,70,25); setBounds(100,100,600,400); setBackground(Color.white);add(b1);add(b2);add(b3);add(b4

23、);add(t1);add(t2);add(t3);add(button1);add(button2);add(button3);add(button4); add(button5);add(button6); button1.addActionListener(this); button2.addActionListener(this); button3.addActionListener(this); button4.addActionListener(this); button5.addActionListener(this); button6.addActionListener(thi

24、s); validate(); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) setVisible(false); ); public void actionPerformed(ActionEvent e) if(e.getSource()=button1) me=1; t1.requestFocusInWindow(); else if(me=1) if(e.getSource()=button2) b4.setText(逻辑非:); String sg=t1.getText();

25、 int index=sg.indexOf(+); int l=sg.length(); StringBuffer s=new StringBuffer(sg); for(int i=0;il;i+) if (s.charAt(i)=0) s.setCharAt(i,1); else s.setCharAt(i,0); String ss=s.substring(index+1); t3.setText(ss); else if(e.getSource()=button3) b4.setText(逻辑加:); String sg=t1.getText(); String sg2=t2.getT

26、ext(); if(sg.length()!=sg2.length() JOptionPane.showMessageDialog(this, 您输入的两个参数长度不一样,警告对话框,JOptionPane.WARNING_MESSAGE); else int index=sg.indexOf(+); /String ss=sg.substring(index+1); StringBuffer s=new StringBuffer(sg); StringBuffer s2=new StringBuffer(sg2); for(int i=0;isg.length();i+) if(s.char

27、At(i)=1|s2.charAt(i)=1) s.setCharAt(i,1); else s.setCharAt(i,0); String ss=s.substring(index+1); t3.setText(ss); else if(e.getSource()=button4) b4.setText(该数逻辑乘为:); String sg=t1.getText(); String sg2=t2.getText(); if(sg.length()!=sg2.length() JOptionPane.showMessageDialog(this, 您输入的两个参数长度不一样,警告对话框,JOp

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1