实验1 算术测试
计算机组成原理实验(接线、实验步骤)
计算机组成原理实验(接线、实验步骤)实验⼀运算器[实验⽬的]1.掌握算术逻辑运算加、减、乘、与的⼯作原理;2.熟悉简单运算器的数据传送通路;3.验证实验台运算器的8位加、减、与、直通功能;4.验证实验台4位乘4位功能。
[接线]功能开关:DB=0 DZ=0 DP=1 IR/DBUS=DBUS接线:LRW:GND(接地)IAR-BUS# 、M1、M2、RS-BUS#:接+5V控制开关:K0:SW-BUS# K1:ALU-BUSK2:S0 K3:S1 K4:S2K5:LDDR1 K6:LDDR2[实验步骤]⼀、(81)H与(82)H运算1.K0=0:SW开关与数据总线接通K1=0:ALU输出与数据总线断开2.开电源,按CLR#复位3.置数(81)H:在SW7—SW0输⼊10000001→LDDR2=1,LDDR1=0→按QD:数据送DR2置数(82)H:在SW7—SW0输⼊10000010→LDDR2=0,LDDR1=1→按QD:数据送DR1 4.K0=1:SW开关与数据总线断开K1=1:ALU输出与数据总线接通5. S2S1S0=010:运算器做加法(观察结果在显⽰灯的显⽰与进位结果C的显⽰)6.改变S2S1S0的值,对同⼀组数做不同的运算,观察显⽰灯的结果。
⼆、乘法、减法、直通等运算1.K0K1=002.按CLR#复位3.分别给DR1和DR2置数4.K0K1=115. S2S1S0取不同的值,执⾏不同的运算[思考]M1、M2控制信号的作⽤是什么?运算器运算类型选择表选择操作S2 S1 S00 0 0 A&B0 0 1 A&A(直通)0 1 0 A+B0 1 1 A-B1 0 0 A(低位)ΧB(低位)完成以下表格ALU-BUS SW-BUS# 存储器内容S2S1S0 DBUS C输⼊时:计算时:DR1:01100011DR2:10110100(与)DR1:10110100DR2:01100011(直通)DR1:01100011DR2:01100011(加)DR1:01001100DR2:10110011(减)DR1:11111111DR2:11111111(乘)实验⼆双端⼝存储器[实验⽬的]1.了解双端⼝存储器的读写;2.了解双端⼝存储器的读写并⾏读写及产⽣冲突的情况。
实验报告组合逻辑电(3篇)
第1篇一、实验目的1. 理解组合逻辑电路的基本概念和组成原理;2. 掌握组合逻辑电路的设计方法;3. 学会使用逻辑门电路实现组合逻辑电路;4. 培养动手能力和分析问题、解决问题的能力。
二、实验原理组合逻辑电路是一种在任意时刻,其输出仅与该时刻的输入有关的逻辑电路。
其基本组成单元是逻辑门,包括与门、或门、非门、异或门等。
通过这些逻辑门可以实现各种组合逻辑功能。
三、实验器材1. 74LS00芯片(四路2输入与非门);2. 74LS20芯片(四路2输入或门);3. 74LS86芯片(四路2输入异或门);4. 74LS32芯片(四路2输入或非门);5. 逻辑电平转换器;6. 电源;7. 连接线;8. 实验板。
四、实验步骤1. 设计组合逻辑电路根据实验要求,设计一个组合逻辑电路,例如:设计一个3位奇偶校验电路。
2. 画出逻辑电路图根据设计要求,画出组合逻辑电路的逻辑图,并标注各个逻辑门的输入输出端口。
3. 搭建实验电路根据逻辑电路图,搭建实验电路。
将各个逻辑门按照电路图连接,并确保连接正确。
4. 测试电路功能使用逻辑电平转换器产生不同的输入信号,观察输出信号是否符合预期。
五、实验数据及分析1. 设计的3位奇偶校验电路逻辑图如下:```+--------+ +--------+ +--------+| | | | | || A1 |---| A2 |---| A3 || | | | | |+--------+ +--------+ +--------+| | || | || | |+-------+-------+||v+--------+| || F || |+--------+```2. 实验电路搭建及测试根据逻辑电路图,搭建实验电路,并使用逻辑电平转换器产生不同的输入信号(A1、A2、A3),观察输出信号F是否符合预期。
(1)当A1=0,A2=0,A3=0时,F=0,符合预期;(2)当A1=0,A2=0,A3=1时,F=1,符合预期;(3)当A1=0,A2=1,A3=0时,F=1,符合预期;(4)当A1=0,A2=1,A3=1时,F=0,符合预期;(5)当A1=1,A2=0,A3=0时,F=1,符合预期;(6)当A1=1,A2=0,A3=1时,F=0,符合预期;(7)当A1=1,A2=1,A3=0时,F=0,符合预期;(8)当A1=1,A2=1,A3=1时,F=1,符合预期。
计算机组成原理数据通路实验报告
计算机组成原理数据通路实验报告计算机组成原理实验报告计算机组成原理实验报告实验一基本运算器实验一、实验目的1. 了解运算器的组成结构2. 掌握运算器的工作原理3. 深刻理解运算器的控制信号二、实验设备PC机一台、TD-CMA实验系统一套三、实验原理1. (思考题)运算器的组成包括算数逻辑运算单元ALU(Arithmetic and Logic Unit)、浮点运算单元FPU(Floating Point Unit)、通用寄存器组、专用寄存器组。
①算术逻辑运算单元ALU (Arithmetic and Logic Unit)ALU主要完成对二进制数据的定点算术运算(加减乘除)、逻辑运算(与或非异或)以及移位操作。
在某些CPU中还有专门用于处理移位操作的移位器。
通常ALU由两个输入端和一个输出端。
整数单元有时也称为IEU(IntegerExecution Unit)。
我们通常所说的“CPU 是XX位的”就是指ALU所能处理的数据的位数。
②浮点运算单元FPU(Floating Point Unit)FPU主要负责浮点运算和高精度整数运算。
有些FPU还具有向量运算的功能,另外一些则有专门的向量处理单元。
③通用寄存器组通用寄存器组是一组最快的存储器,用来保存参加运算的操作数和中间结果。
④专用寄存器专用寄存器通常是一些状态寄存器,不能通过程序改变,由CPU自己控制,表明某种状态。
而运算器内部有三个独立运算部件,分别为算术、逻辑和移位运算部件,逻辑运算部件由逻辑门构成,而后面又有专门的算术运算部件设计实验。
下图为运算器内部原理构造图2. 运算器的控制信号实验箱中所有单元的T1、T2、T3、T4都连接至控制总线单元的T1、T2、T3、T4,CLR都连接至CON单元的CLR按钮。
T4由时序单元的TS4提供(脉冲信号),其余控制信号均由CON单元的二进制数据开关模拟给出。
控制信号中除T4为脉冲信号外,其余均为电平信号,其中ALU_B为低有效,其余为高有效。
运算器实验实验报告
运算器实验实验报告一、实验目的运算器是计算机中进行算术和逻辑运算的部件,本次实验的目的在于深入理解运算器的工作原理,掌握其基本结构和功能,并通过实际操作和测试,提高对计算机硬件系统的认识和实践能力。
二、实验设备本次实验所使用的设备包括:计算机、数字逻辑实验箱、导线若干等。
三、实验原理运算器主要由算术逻辑单元(ALU)、寄存器、数据通路和控制逻辑等组成。
ALU 是运算器的核心部件,能够执行加法、减法、乘法、除法等算术运算以及与、或、非等逻辑运算。
寄存器用于存储参与运算的数据和运算结果,数据通路负责在各部件之间传输数据,控制逻辑则根据指令控制运算器的操作。
在本次实验中,我们采用数字逻辑电路来构建运算器的基本功能单元,并通过连线和设置控制信号来实现不同的运算操作。
四、实验内容1、算术运算实验(1)加法运算首先,将两个 8 位二进制数分别输入到两个寄存器中,然后通过控制信号使 ALU 执行加法运算,将结果存储在另一个寄存器中,并通过数码管显示出来。
通过改变输入的数值,多次进行加法运算,观察结果是否正确。
(2)减法运算与加法运算类似,将两个 8 位二进制数输入到寄存器中,使 ALU 执行减法运算,观察结果的正确性。
2、逻辑运算实验(1)与运算输入两个 8 位二进制数,控制 ALU 进行与运算,查看结果。
(2)或运算同样输入两个 8 位二进制数,进行或运算并验证结果。
(3)非运算对一个 8 位二进制数进行非运算,观察输出结果。
3、移位运算实验(1)逻辑左移将一个 8 位二进制数进行逻辑左移操作,观察移位后的结果。
(2)逻辑右移执行逻辑右移操作,对比移位前后的数据。
五、实验步骤1、连接实验设备按照实验箱的说明书,将计算机与数字逻辑实验箱正确连接,并接通电源。
2、构建电路根据实验要求,使用导线将数字逻辑芯片连接起来,构建运算器的电路结构。
3、输入数据通过实验箱上的开关或按键,将待运算的数据输入到相应的寄存器中。
南邮数据结构实验一
实验报告
( 2016 / 2017 学年第一学期)
课程名称数据结构A
实验名称线性表的基本运算及多项式的算术运算实验时间2017 年 3 月22 日指导单位计算机学院计算机科学与技术系
指导教师邹志强
学生姓名吴爱天班级学号B15040916 学院(系) 计算机学院专业信息安全
实验报告
实验报告
度为O(n)级别。
2、在顺序表类SeqList 中增加成员函数bool DeleteX (const T &x), 删除表中所有元素值等于x 的元素.若表中存在这样的元素, 则删除之, 且函数返回true, 否则函数返回false.
删除所有值为X的元素
注释:主要思路为,依次查找SeqList内的元素,每次都与X的值进行依次对比,如果相同则删除,不同则继续向下扫描,知道SeqList末尾,最后用Search()来检验是否删除干净,复杂度也为O(n).
如图,原数据为 7 49 73 58 30 72,逆转过后为72 30 58 73 49 7,符合预期。
DeleteX()
如图,原数据中有3个0,输出结果中已经没有0,已经删除干净,符合预期。
实验报告
如图,分别检测6X^6+3X^5+4X^2与2X^2+3X相加和相乘运算,得到
6X^6+3X^5+4X^2+2X^2+3X+2X^2+3X和12X^8+18X^7+6X^7+9X^6+8X^4+12X^3,
符合预期。
实验八 图形用户界面与对话框
实验八图形用户界面与对话框1.实验目的1、学会处理ActionEvent事件2、学会使用布局类3、学习焦点、鼠标和键盘事件4、学习使用输入和消息对话框2.实验内容1、根据附录里的源代码,按照注释要求,完成代码填空,使程序能够运行得出结果。
1) 实验1算术测试2) 实验2布局与日历3) 实验3华容道4) 实验4字体对话框5) 实验5计算平方根6) 实验6简易计算器2、设计编写程序完成以下任务。
1)修改实验1的代码,再增加“小学生”级别,并增加测试乘、除法的功能。
2)编写一个应用程序,用户可以在一个文本框里输入数字字符,按Enter 键后将数字放入一个文本区。
当输入的数字大于1000时,弹出一个有模式的对话框,提示用户数字已经大于1000,是否继续将该数字放入文本区。
3)编写应用程序,有一个标题为“移动”的窗口,窗口布局为null,在窗口中有两个按钮,单击一个按钮让另一个按钮移动。
4)仿照操作系统中的简易计算机,自行设计一个能进行加减乘除运算的计算器。
需要考虑先进性乘除运算再进行加减运算。
3.实验步骤略4.评分标准1.A——内容功能完善,编程风格好,人机接口界面好;2.B——内容功能完善,编程风格良好,人机接口界面良好;3.C——完成必做内容;4.D——能完成必做内容;5.E——未按时完成必做内容,或者抄袭(雷同者全部为E).参照书上实验按模版要求,将【代码】替换为Java程序代码,编写好完整的程序文档,最后运行得到的相关文件,把实验所得文件一起打包上交。
(压缩包的文件名为:学号后三位和名字开头字母,如109zhh.RAR|ZIP)附录:实验1 算术测试模板代码Teacher.javaimport java.util.Random;import java.awt.event.*;import javax.swing.*;public class Teacher implements ActionListener{int numberOne,numberTwo;String operator=" ";boolean isRight;Random random;int maxInteger;JTextField textOne,textTwo,textResult;JLabel operatorLabel,message;Teacher(){random=new Random();}public void setMaxInteger(int n){maxInteger=n;}public void actionPerformed(ActionEvent e){String str=e.getActionCommand();if(str.equals("getProblem")){numberOne=random.nextInt(maxInteger)+1;numberTwo=random.nextInt(maxInteger)+1;double d=Math.random();if(d>=0.5){operator="+";}else{operator="-";}textOne.setText(""+numberOne);textTwo.setText(""+numberTwo);operatorLabel.setText(operator);message.setText("请回答");textResult.setText(null);}else if(str.equals("answer")){String answer=textResult.getText();try{int result=Integer.parseInt(answer);if(operator.equals("+")){if(result==numberOne+numberTwo){message.setText("你回答正确");}else{message.setText("你回答错误");}}else if(operator.equals("-")){if(result==numberOne-numberTwo){message.setText("你回答正确");}else{message.setText("你回答错误");}}}catch(NumberFormatException ex){message.setText("请输入数字字符");}}}public void setJTextField(JTextField...t){textOne =t[0];textTwo =t[1];textResult =t[2];}public void setJLabel(bel){operatorLabel=label[0];message=label[1];}}ComputerFrame.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;public class ComputerFrame extends JFrame{JMenuBar menubar;JMenu choiceGrade;JMenuItem grade1,grade2;JTextField textOne,textTwo,textResult;JButton getProblem,giveAnswer;JLabel operatorLabel,message;Teacher teacherZhang;ComputerFrame(){teacherZhang=new Teacher();teacherZhang.setMaxInteger(20);setLayout(new FlowLayout());menubar=new JMenuBar();choiceGrade=new JMenu("选择级别");grade1=new JMenuItem("幼儿级别");grade2=new JMenuItem("儿童级别");grade1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){teacherZhang.setMaxInteger(10);}});grade2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){teacherZhang.setMaxInteger(50);}});choiceGrade.add(grade1);choiceGrade.add(grade2);menubar.add(choiceGrade);setJMenuBar(menubar);//【代码1】//创建textOne,其可见字符长是5textTwo=new JTextField(5);textResult=new JTextField(5);operatorLabel=new JLabel("+");operatorLabel.setFont(new Font("Arial",Font.BOLD,20));message=new JLabel("你还没有回答呢");getProblem=new JButton("获取题目");giveAnswer=new JButton("确认答案");add(getProblem);add(textOne);add(operatorLabel);add(textTwo);add(new Label("="));add(textResult);add(giveAnswer);add(message);textResult.requestFocus();textOne.setEditable(false);textTwo.setEditable(false);getProblem.setActionCommand("getProblem");textResult.setActionCommand("answer");giveAnswer.setActionCommand("answer");teacherZhang.setJTextField(textOne,textTwo,textResult);teacherZhang.setJLabel(operatorLabel,message);//【代码2】//将teacherZhang注册为getProblem的ActionEvent事件监视器//【代码3】//将teacherZhang注册为giveAnswer的ActionEvent事件监视器//【代码4】//将teacherZhang注册为textResult的ActionEvent事件监视器setVisible(true);validate();setDefaultCloseOperation(DISPOSE_ON_CLOSE);}}MainClass.javapublic class MainClass {public static void main(String[] args) {ComputerFrame frame;frame=new ComputerFrame();frame.setTitle("算术测试");frame.setBounds(100,100,650,180);}}实验2 布局与日历模板代码CalendarBean.javaimport java.util.Calendar;public class CalendarBean {String [] day;int year=2008,month=0;public int getYear() {return year;}public void setYear(int year) {this.year = year;}public int getMonth() {return month;}public void setMonth(int month) {this.month = month;}public String [] getCalendar() {String [] a=new String[42];Calendar 日历=Calendar.getInstance();日历.set(year,month-1,1);int 星期几=日历.get(Calendar.DAY_OF_WEEK)-1;int day=0;if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) day=31;if(month==4||month==6||month==9||month==11)day=30;if(month==2) {if(((year%4==0)&&(year%100!=0))||(year%400==0))day=29;elseday=28;}for(int i=星期几,n=1;i<星期几+day;i++) {a[i]=String.valueOf(n) ;n++;}return a;}}CalendarFrame.javaimport java.awt.event.*;import javax.swing.*;import javax.swing.border.*;import java.awt.*;import java.util.*;public class CalendarFrame extends JFrame implements ActionListener {JLabel labelDay[]=new JLabel[42];JButton titleName[]=new JButton[7];String name[]={"日","一","二","三","四","五","六"};JButton nextMonth,previousMonth;CalendarBean calendar;JLabel showMessage=new JLabel("",JLabel.CENTER);int year=2011,month=2;public CalendarFrame(){JPanel pCenter=new JPanel();//【代码1】//将pCenter的布局设置为7行7列的GridLayout布局.for(int i=0;i<7;i++){titleName[i]=new JButton(name[i]);titleName[i].setBorder(new SoftBevelBorder(BevelBorder.RAISED));//【代码2】//pCenter中添加组件titleName[i]}for(int i=0;i<42;i++){labelDay[i]=new JLabel("",JLabel.CENTER);labelDay[i].setBorder(new SoftBevelBorder(BevelBorder.LOWERED));//【代码3】//pCenter中添加组件labelDay[i]}calendar=new CalendarBean();nextMonth=new JButton("下月");previousMonth=new JButton("上月");nextMonth.addActionListener(this);previousMonth.addActionListener(this);JPanel pNoth=new JPanel(),pSouth=new JPanel();pNoth.add(previousMonth);pNoth.add(nextMonth);pSouth.add(showMessage);//【代码4】//将窗口pCenter添加到中央区域//【代码5】//将窗口pNoth添加到北面区域//【代码6】//将窗口pSouth添加到南面区域setYearAndMonth(year,month);setDefaultCloseOperation(DISPOSE_ON_CLOSE);}public void setYearAndMonth(int y,int m){calendar.setYear(y);calendar.setMonth(m);String day[]= calendar.getCalendar();for(int i=0;i<42;i++){labelDay[i].setText(day[i]);}showMessage.setText("日历:"+calendar.getYear()+"年"+calendar.month+"月"); }public void actionPerformed(ActionEvent e) {if(e.getSource()==nextMonth){month=month+1;if(month>12){month=1;}calendar.setMonth(month);String day[]=calendar.getCalendar();for(int i=0;i<42;i++){labelDay[i].setText(day[i]);}}else if(e.getSource()==previousMonth){month=month-1;if(month<1){month=12;}calendar.setMonth(month);String day[]=calendar.getCalendar();for(int i=0;i<42;i++){labelDay[i].setText(day[i]);}}showMessage.setText("日历:"+calendar.getYear()+"年"+calendar.month+"月");}}CalendarMainClass.javapublic class CalendarMainClass {public static void main(String[] args) {CalendarFrame frame=new CalendarFrame();frame.setBounds(100,100,360,300);frame.setVisible(true);frame.setYearAndMonth(2013,5);}}实验3 华容道模板代码MainClassHRR.javapublic class MainClassHRR {public static void main(String[] args) {{ Hua_Rong_Road HRR=new Hua_Rong_Road();}}}Person.javaimport java.awt.event.*;import java.awt.*;import javax.swing.*;public class Person extends JButton implements FocusListener {int number;Color c=new Color(255,245,170);Font font=new Font("宋体",Font.BOLD,12);Person(int number,String s){ super(s);setBackground(c);setFont(font);this.number=number;c=getBackground();addFocusListener(this);}public void focusGained(FocusEvent e){ setBackground(Color.red);}public void focusLost(FocusEvent e){ setBackground(c);}}Hua_Rong_Road.javaimport java.awt.event.*;import java.awt.*;import javax.swing.*;public class Hua_Rong_Road extends JFrame implements MouseListener,KeyListener, ActionListener {Person person[]=new Person[10];JButton left,right,above,below;JButton restart=new JButton("重新开始");public Hua_Rong_Road(){ init();setBounds(100,100,320,360);setVisible(true);setDefaultCloseOperation(DISPOSE_ON_CLOSE);validate();}public void init(){ setLayout(null);add(restart);restart.setBounds(100,320,120,25);restart.addActionListener(this);String name[]={"曹操","关羽","张","刘","周","黄","兵","兵","兵","兵"};for(int k=0;k<name.length;k++){ person[k]=new Person(k,name[k]);person[k].addMouseListener(this);person[k].addKeyListener(this);add(person[k]);}person[0].setBounds(104,54,100,100);person[1].setBounds(104,154,100,50);person[2].setBounds(54, 154,50,100);person[3].setBounds(204,154,50,100);person[4].setBounds(54, 54, 50,100);person[5].setBounds(204, 54, 50,100);person[6].setBounds(54,254,50,50);person[7].setBounds(204,254,50,50);person[8].setBounds(104,204,50,50);person[9].setBounds(154,204,50,50);person[9].requestFocus();left=new JButton(); right=new JButton();above=new JButton(); below=new JButton();add(left); add(right);add(above); add(below);left.setBounds(49,49,5,260);right.setBounds(254,49,5,260);above.setBounds(49,49,210,5);below.setBounds(49,304,210,5);validate();}public void keyTyped(KeyEvent e){}public void keyReleased(KeyEvent e){}public void keyPressed(KeyEvent e){ Person man=(Person)e.getSource();if(e.getKeyCode()==KeyEvent.VK_DOWN){ go(man,below);}if(e.getKeyCode()==KeyEvent.VK_UP){ go(man,above);}if(e.getKeyCode()==KeyEvent.VK_LEFT){ go(man,left);}if(e.getKeyCode()==KeyEvent.VK_RIGHT){ go(man,right);}}public void mousePressed(MouseEvent e){ Person man=(Person)e.getSource();int x=-1,y=-1;x=e.getX();y=e.getY();int w=man.getBounds().width;int h=man.getBounds().height;if(y>h/2){ go(man,below);}if(y<h/2){ go(man,above);}if(x<w/2){ go(man,left);}if(x>w/2){ go(man,right);}}public void mouseReleased(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}public void mouseClicked(MouseEvent e) {}public void go(Person man,JButton direction){ boolean move=true;Rectangle manRect=man.getBounds();int x=man.getBounds().x;int y=man.getBounds().y;if(direction==below)y=y+50;else if(direction==above)y=y-50;else if(direction==left)x=x-50;else if(direction==right)x=x+50;manRect.setLocation(x,y);Rectangle directionRect=direction.getBounds();for(int k=0;k<10;k++){ Rectangle personRect=person[k].getBounds();if((manRect.intersects(personRect))&&(man.number!=k)){ move=false;}}if(manRect.intersects(directionRect)){ move=false;}if(move==true){ man.setLocation(x,y);}}public void actionPerformed(ActionEvent e){ dispose();new Hua_Rong_Road();}}实验4 字体对话框模板代码FontFamilyNames.javaimport java.awt.GraphicsEnvironment;public class FontFamilyNames{ String allFontName[];public String [] getFontName(){ GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();allFontName=ge.getAvailableFontFamilyNames();return allFontName;}}FontDialog.javaimport java.awt.event.*;import java.awt.*;import javax.swing.*;public class FontDialog extends JDialog implements ItemListener,ActionListener{ FontFamilyNames fontFamilyNames;int fontSize=38;String fontName;JComboBox fontSizeList,fontNameList;JLabel label;Font font;JButton yes,cancel;static int YES=1,NO=0;int state=-1;FontDialog(Frame f){super(f);setTitle("字体");font=new Font("宋体",Font.PLAIN,12);fontFamilyNames=new FontFamilyNames();//【代码1】//当前对话框调用setModal(boolean b)设置为有模式yes=new JButton("Yes");cancel=new JButton("cancel");yes.addActionListener(this);cancel.addActionListener(this);label=new JLabel("hello,奥运",JLabel.CENTER);fontSizeList=new JComboBox();fontNameList=new JComboBox();String name[]=fontFamilyNames.getFontName();fontNameList.addItem("字体");for(int k=0;k<name.length;k++){ fontNameList.addItem(name[k]);}fontSizeList.addItem("大小");for(int k=8;k<72;k=k+2){ fontSizeList.addItem(new Integer(k));}fontNameList.addItemListener(this);fontSizeList.addItemListener(this);JPanel pNorth=new JPanel();pNorth.add(fontNameList);pNorth.add(fontSizeList);add(pNorth,BorderLayout.NORTH);add(label,BorderLayout.CENTER);JPanel pSouth=new JPanel();pSouth.add(yes);pSouth.add(cancel);add(pSouth,BorderLayout.SOUTH);setBounds(100,100,280,170);setDefaultCloseOperation(DISPOSE_ON_CLOSE);validate();}public void itemStateChanged(ItemEvent e){if(e.getSource()==fontNameList){fontName=(String)fontNameList.getSelectedItem();font=new Font(fontName,Font.PLAIN,fontSize); }else if(e.getSource()==fontSizeList){Integer m=(Integer)fontSizeList.getSelectedItem();fontSize=m.intValue();font=new Font(fontName,Font.PLAIN,fontSize); }label.setFont(font);label.repaint();validate();}public void actionPerformed(ActionEvent e){ if(e.getSource()==yes){ state=YES;//【代码2】//对话框设置为不可见}else if(e.getSource()==cancel){ state=NO;//【代码3】//对话框设置为不可见}}public int getState(){ return state;}public Font getFont(){ return font;}}FrameHaveDialog.javaimport java.awt.event.*;import java.awt.*;import javax.swing.*;public class FrameHaveDialog extends JFrame implements ActionListener{ JTextArea text;JButton buttonFont;FrameHaveDialog(){ buttonFont=new JButton("设置字体");text=new JTextArea("Java面向对象程序设计");buttonFont.addActionListener(this);add(buttonFont,BorderLayout.NORTH);add(text);setBounds(60,60,300,300);setVisible(true);validate();setDefaultCloseOperation(DISPOSE_ON_CLOSE);}public void actionPerformed(ActionEvent e){ if(e.getSource()==buttonFont){ FontDialog dialog=new FontDialog(this);//【代码4】//创建对话框dialog.setVisible(true);//【代码5】//对话框设置为可见//【代码6】//对话框设置设置标题为“字体对话框”if(dialog.getState()==FontDialog.YES){ text.setFont(dialog.getFont());text.repaint();}if(dialog.getState()==FontDialog.NO){ text.repaint();}}}}FontDialogMainClass.javapublic class FontDialogMainClass{ public static void main(String args[]){ FrameHaveDialog win=new FrameHaveDialog();}}实验5 计算平方根模板代码InputNumber.javaimport javax.swing.*;public class InputNumber {public static void main(String[] args) {double result=0;boolean inputComplete=false;while(inputComplete==false){String str=//【代码1】//弹出输入对话框try{result=Double.parseDouble(str);if(result>=0){inputComplete=true;}}catch(NumberFormatException exp){//【代码2】//弹出消息对话框inputComplete=false;}}double sqrtRoot=Math.sqrt(result);System.out.println(result+"平方根:"+sqrtRoot);}}实验6 简易计算器模板代码UserFrm.javaimport java.awt.*;import java.awt.event.*;public class UserFrm extends Frame implements ActionListener {private MenuBar jmb = new MenuBar();private MenuItem item = new MenuItem("退出");public static Font font = new Font("宋体", 1, 16);public UserFrm(String title) throws HeadlessException {super(title);//【代码1】//设置该Frame位置与大小,具体值为(100, 100, 250, 200)setVisible(true);Menu menu = new Menu("文件");menu.add(item);item.setFont(font);Panel panelNorth = new Panel();//【代码2】//把panelNorth加入窗体的北区add(new Caculator(), BorderLayout.CENTER);item.addActionListener(this);jmb.add(menu);jmb.setFont(font);setMenuBar(jmb);//【代码3】//用匿名类的方式设计完成窗体关闭的监听和实现关闭的方法validate();}public void actionPerformed(ActionEvent e) {Object o = e.getSource();if (o == item)System.exit(1);}public static void main(String[] args) {new UserFrm("用户界面");}}class Caculator extends Panel implements ActionListener, KeyListener {private TextField tf = new TextField("");private float x = 0;private float y = 0;private int code = 0;private boolean enable;private boolean first;private String str = "";public Caculator() {setLayout(new BorderLayout());enable = true;first = true;add(tf, BorderLayout.NORTH);Panel panel = new Panel();//【代码4】//把panel设置为GridLayout布局Button btn = null;//【代码5】//创建btn并把标题设为1;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听//【代码6】//创建btn并把标题设为2;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听//【代码7】//创建btn并把标题设为3;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听//【代码8】//创建btn并把标题设为+;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听//【代码9】//创建btn并把标题设为4;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听//【代码10】//创建btn并把标题设为5;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听//【代码11】//创建btn并把标题设为6;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听//【代码12】//创建btn并把标题设为-;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听//【代码13】//创建btn并把标题设为7;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听//【代码14】//创建btn并把标题设为8;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听///【代码15】//创建btn并把标题设为9;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听//【代码16】//创建btn并把标题设为*;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听//【代码17】//创建btn并把标题设为0;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听//【代码18】//创建btn并把标题设为.;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听//【代码19】//创建btn并把标题设为/;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听btn = new Button("/");panel.add(btn);btn.setFont(UserFrm.font);btn.addActionListener(this);btn.addKeyListener(this);//【代码20】//把panel加入Caculator的中部区域中}public void actionPerformed(ActionEvent e) {if (e.getActionCommand() == "+") {//【代码21】//把文本框里的数字转成浮点型,赋给xcode = 0;this.tf.setText("");}if (e.getActionCommand() == "-") {//【代码21】//把文本框里的数字转成浮点型,赋给xcode = 1;this.tf.setText("");}if (e.getActionCommand() == "*") {//【代码21】//把文本框里的数字转成浮点型,赋给xcode = 2;this.tf.setText("");}if (e.getActionCommand() == "/") {x = Float.parseFloat(tf.getText());code = 3;this.tf.setText("");}if (e.getActionCommand() != "+" && e.getActionCommand() != "-"&& e.getActionCommand() != "*" && e.getActionCommand() != "/"&& e.getActionCommand() != "=") {if (enable) {if (first) {tf.setText(e.getActionCommand());first = false;} else {tf.setText(tf.getText() + e.getActionCommand());}}else {tf.setText(e.getActionCommand());enable = true;}}if (e.getActionCommand() == "=") {switch (code) {case 0://【代码22】//完成两个数的加法运算tf.setText(Float.toString(y));enable = false;break;case 1://【代码23】//完成两个数的减法运算tf.setText(Float.toString(y));enable = false;break;case 2://【代码24】//完成两个数的乘法运算tf.setText(Float.toString(y));enable = false;break;case 3://【代码25】//完成两个数的除法运算tf.setText(Float.toString(y));enable = false;break;}}}public void keyPressed(KeyEvent e) {if (e.getKeyChar() == '+') {x = Float.parseFloat(tf.getText());code = 0;this.tf.setText("");}if (e.getKeyChar() == '-') {x = Float.parseFloat(tf.getText());code = 1;this.tf.setText("");}if (e.getKeyChar() == '*') {x = Float.parseFloat(tf.getText());code = 2;this.tf.setText("");}if (e.getKeyChar() == '/') {x = Float.parseFloat(tf.getText());code = 3;this.tf.setText("");}if (【代码26】) {//判断用键盘输入的数字是否为0-9以及.号,其中的一个。
实验一数据类型和表达式掌握C语言...
实验一数据类型和表达式一.实验目的1.掌握C语言基本数据类型的概念,理解数据类型与运算的关系。
2.熟悉简单变量的定义和赋值方法,掌握不同类型数据之间转换的规律。
3.学习C语言运算符优先级和结合性的概念,掌握算术表达式的计算方法及表达式计算中的类型转换方法。
4.掌握数学式子的表达式表示。
5.进一步熟悉C程序的编辑、编译、连接和运行的过程。
二.实验内容与算法解析1.编程计算下面算术表达式的值,手工计算检测。
(1) x+a%3*(int)(x+y)%2/4 设x=2.5,a=7,y=4.7(2)(float)(a+b)/2+(int)x%(int)y 设a=2,b=3,x=3.5, y=2.52.下面表达式计算中,哪些地方会发生类型转换?各个转换从什么类型转换到什么类型?表达式计算的结果是什么?试编程进行验证。
(1) 2.5+2*7%2/4 (2) 4*(2L+6.5)-12(3) 10/(int)(5.1+3)) (4) 2*10.0/(5*3)3.运行下面程序分析结果:main(){int a,b,c;a=9;b=5;c=24;printf("%d",a%c/b);}4.输入并运行下面程序,对照程序分析运行结果:程序如下:#include <stdio.h>main( ){ int a,b;long d;unsigned e;char c;a=100;c='W';b=-100;d=50000;e=8766;printf("a=%d,b=%d,c=%c,d=%ld,e=%u\n",a,b,c,d,e);}并修改程序测试:1)将a=100;换成a=42569;,会得到什么结果,为什么?2)将b=-100;换成b=c;,会得到什么结果,为什么?3)将e=8766; 换成e=-10;,会得到什么结果,为什么?5.写出程序运行结果,并上机进行验证,并分析原因。
计算机组成原理实验一运算器组成实验
实验一 运算器组成实验一、实验目的1.熟悉双端口通用寄存器堆的读写操作。
2.熟悉简单运算器的数据传送通路。
3.验证运算器74LS181的算术逻辑功能。
4.按给定数据,完成指定的算术、逻辑运算。
二、实验电路ALU-BUS#DBUS7DBUS0Cn#C三态门(244)三态门(244)ALU(181)ALU(181)S3S2S1S0MA7A6A5A4F7F6F5F4F3F2F1F0B3B2B1B0Cn+4CnCnCn+4LDDR2T2T2LDDR1LDRi T3SW-BUS#DR1(273)DR2(273)双端口通用寄存器堆RF(ispLSI1016)RD1RD0RS1RS0WR1WR0数据开关(SW7-SW0)数据显示灯A3A2A1A0B7B6B5B4图3.1 运算器实验电路LDRi T3AB三态门R S -B U S #图3.1示出了本实验所用的运算器数据通路图。
参与运算的数据首先通过实验台操作板上的八个二进制数据开关SW7-SW0来设置,然后输入到双端口通用寄存器堆RF 中。
RF(U54)由一个ispLSI1016实现,功能上相当于四个8位通用寄存器,用于保存参与运算的数据,运算后的结果也要送到RF 中保存。
双端口寄存器堆模块的控制信号中,RS1、RS0用于选择从B 端口(右端口)读出的通用寄存器,RD1、RD0用于选择从A 端口(左端口)读出的通用寄存器。
而WR1、WR0用于选择写入的通用寄存器。
LDRi 是写入控制信号,当LDRi=1时,数据总线DBUS上的数据在T3写入由WR1、WR0指定的通用寄存器。
RF的A、B端口分别与操作数暂存器DR1、DR2相连;另外,RF的B端口通过一个三态门连接到数据总线DBUS上,因而RF中的数据可以直接通过B端口送到DBUS上。
DR1(U47)和DR2(U48)各由1片74LS273构成,用于暂存参与运算的数据。
DR1接ALU 的A输入端口,DR2接ALU的B输入端口。
实验题目
实验一 Java语言概述【实验目的】1.掌握开发Java应用程序的三个步骤:编写源文件、编译源文件和运行应用程序。
2.熟悉Java应用程序的基本结构,并能联合编译应用程序所需要的类。
文件保存要求:在D:盘新建文件夹“学号”,在“D:\ 学号”下新建文件夹“timu1”。
题目1的文件保存在“timu1”中,以下依次类推。
【题目1】1、实验要求:编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java”和“We are students”。
2、程序模板:请按模板要求,将【代码】替换为Java程序代码。
3、实验后的练习a.编译器怎样提示丢失大括号的错误。
b.编译器怎样提示语句丢失分号的错误。
c.编译器怎样提示将System写成system这一错误。
d.编译器怎样提示将String写成string这一错误。
【题目2】1、实验要求:编写3个源文件:、、,每个源文件只有一个类。
含有应用程序的主类(含有main方法),并使用了Teacher和Student类。
将3个源文件保存到同一目录,D:\timu2,然后编译。
2、程序模板:请按模板要求,将【代码】替换为Java程序代码。
3、实验后的练习a.将编译通过后,不断地修改源文件中的【代码2】。
比如,在命令行窗口输出“我是语文老师”或“我是数学老师”。
要求每次修改源文件后,单独编译,然后直接运行应用程序(不要再编译)。
b.如果需要编译某个目录下的全部Java源文件,如D:\1001目录,可以使用如下命令:D:\1001>javac *.java请练习上述命令。
【题目3】1、实验要求:课本第15页习题2、实验后的练习习题8.(4)实验四类与对象【实验目的】1.掌握使用类来封装对象的属性和行为。
2.掌握对象的组合以及参数传递。
3.掌握类变量与实例变量,以及类方法与实例方法的区别。
文件保存要求:在D:盘新建文件夹“shiyan04”,在“D:\ 20120shiyan04”下新建文件夹“timu1”。
Java实验指导书2013版
第一部份绪论 (2)本课程实验的作用与任务 (2)本课程实验的基础知识 (2)本课程实验教学项目及其教学要求 (2)第二部份基本实验指导 (4)实验一:Java基本语法 (4)实验三:Java面向对象程序设计(一) (9)实验五:Java常用类 (18)实验七:Java集合 (21)实验九:GUI图形用户界面 (26)第一部份绪论本课程实验的作用与任务使学生进一步深刻理解Java语言基本概念、语法规则及程序结构,熟练掌握Java语言程序设计的基本方法,提高利用Java在网络环境下开发、设计应用程序的能力,从而进一步培养学生的创新能力和解决实际问题的能力。
熟悉JDK工具的编程和调试环境;熟练掌握选择和循环结构的程序设计;熟练掌握面向对象的程序设计思想,包括系统类的应用和用户自定义类;充分理解类的三种的特性:封装、继承和多态,特别是通过接口和抽象类理解多态;掌握图形用户界面的设计,特别是事件处理;掌握包的使用;掌握常用的输入输出流类的应用。
最后能根据实验的要求认真完成实验报告。
本课程实验的基础知识Java的基本数据类型包括:byte,short,int,long,double,char。
Java的数组属于引用类型的数据,是将相同类型的数据按顺序组成的一种符合数据类型。
Java的运算符有算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符,特别要注意它们的优先级。
Java的控制语句有if语句、switch语句、for语句、while语句、do-while语句。
类是组成Java程序的基本要素,类有两个重要的成员:成员变量和方法。
类是创建对象的模板,类将对象的属性和功能封装为一个整体。
成员变量和类变量的区别、实例方法和类方法的区别、方法的重载、成员的访问权限等都是实验课程所依据的重要理论。
继承、多态、接口、包及内部类都是Java中非常重要的概念。
Java使用“流”来读写数据。
Java的输入输出工作是通过FileInputStream类、FileReader 类、BufferedReader类、ByteArrayInputStream类、ByteArrayOutputStream类等完成的。
算术运算实验报告总结
一、实验目的本次实验旨在通过计算机编程实现对基本算术运算(加、减、乘、除)的模拟,加深对算术运算原理的理解,提高编程能力和问题解决能力。
二、实验内容1. 实验环境(1)操作系统:Windows 10(2)编程语言:Python 3.82. 实验内容(1)编写函数实现加、减、乘、除运算(2)编写主程序,实现用户输入两个数和运算符,调用函数进行计算,并输出结果(3)测试不同类型数据(整数、浮点数、负数)的运算结果三、实验步骤1. 导入Python内置库```pythonimport sys```2. 编写算术运算函数```pythondef add(x, y):return x + ydef subtract(x, y):return x - ydef multiply(x, y):return x ydef divide(x, y):if y == 0:print("除数不能为0")sys.exit()return x / y```3. 编写主程序```pythondef main():while True:num1 = float(input("请输入第一个数:"))num2 = float(input("请输入第二个数:"))operator = input("请输入运算符(+、-、、/):") if operator == '+':result = add(num1, num2)elif operator == '-':result = subtract(num1, num2)elif operator == '':result = multiply(num1, num2)elif operator == '/':result = divide(num1, num2)else:print("运算符错误,请重新输入")continueprint("运算结果:", result)break```4. 运行主程序```pythonif __name__ == '__main__':main()```四、实验结果与分析1. 正确实现加、减、乘、除运算在实验中,我们成功实现了加、减、乘、除运算,并分别定义了四个函数来执行这些运算。
初三化学数字化实验练习题
初三化学数字化实验练习题实验一:酸碱中和反应的定量分析实验目的:通过数字化实验练习,掌握酸碱中和反应的定量分析方法。
实验原理:在酸碱中和反应中,当摩尔数相等的酸、碱完全反应后,酸碱溶液的pH值会达到中性(pH=7)。
根据爱因斯坦常数和酸碱反应的化学方程式,可以通过溶液的物质量和化学计量关系计算出酸碱溶液的物质浓度。
实验步骤:1. 准备两个容量瓶,并使用天平称量适量的酸和碱。
2. 将酸倒入一个容量瓶中,记录酸的质量。
3. 同样地,将碱倒入另一个容量瓶中,并记录其质量。
4. 向两个容量瓶中加入适量的溶剂,摇匀使酸和碱溶解。
5. 使用pH计测量两个溶液的pH值,并记录下来。
6. 确定酸碱平衡反应的化学方程式,并计算出所需反应的摩尔数。
7. 假设酸和碱的摩尔数相等,通过摩尔关系计算出酸和碱的溶液浓度。
实验数据记录与分析:实验记录:酸的质量:0.76 g碱的质量:0.64 g溶剂的体积:100 mLpH值测量结果:酸溶液的pH值:2.8碱溶液的pH值:10.5计算酸碱反应的摩尔数:根据计算得出的摩尔关系,我们可以知道酸碱反应中,一个酸分子和一个碱分子会发生中和反应。
根据化学方程式,我们可以推导出酸和碱的摩尔数相等。
根据酸的质量,我们可以使用化学方程式和酸的相对分子质量计算出酸的摩尔数:酸的摩尔数 = 酸的质量 / 酸的相对分子质量根据碱的质量,我们可以使用化学方程式和碱的相对分子质量计算出碱的摩尔数:碱的摩尔数 = 碱的质量 / 碱的相对分子质量计算酸和碱的溶液浓度:根据酸和碱的摩尔数相等的假设,我们可以使用摩尔关系计算出酸和碱的溶液浓度。
酸溶液的浓度 = 酸的摩尔数 / 溶剂的体积碱溶液的浓度 = 碱的摩尔数 / 溶剂的体积实验结果:酸溶液的浓度:0.76 mol/L碱溶液的浓度:0.64 mol/L实验结论:通过本次实验,我们成功掌握了酸碱中和反应的定量分析方法。
根据实验数据计算得出的酸和碱浓度为0.76 mol/L和0.64 mol/L。
HIT数据结构实验1
哈尔滨工业大学计算机科学与技术学院实验报告课程名称:数据结构与算法课程类型:必修实验项目名称:线性表的实现与应用实验题目:算术表达式求值班级:学号:姓名:一、实验目的通过实验项目的完成,逐步学习线性表结构和分析不同算法的优缺点。
二、实验要求及实验环境a.要求:输入中缀表达式,先转换成后缀表达式,输出后缀表达式,然后对后缀表达式求值。
b.实验环境:编程工具codeblocks和网络资料,课件内容及相关书籍,同学指导(完成小数的运算)三、设计思想(本程序中的用到的所有数据类型的定义,主程序的流程图及各程序模块之间的调用关系)1.逻辑设计2.物理设计①定义数组栈:typedef struct{float data[MaxSize];int top;}OpStack,SeqStack;OpStack栈存放运算符,SeqStack栈存放②定义数据:浮点型输出结果,字符型输入表达式;③//函数声明void InitStack(SeqStack *s);//初始化int StackEmpty(SeqStack s);//判断栈是否为空int GetTop(SeqStack s,DataType *e);//取栈顶元素int PushStack(SeqStack *s,DataType e);//入栈int PopStack(SeqStack *s,DataType *e);//出栈void TranslateE(char s1[],char s2[]);//将中缀表达式转化为后缀表达式float ComputeE(char s[]);//计算后缀表达式先将算术表达式输入到一个数组中,然后用函数TranslateE()进行后缀表达式转换,然后用ComputerE()进行后缀表达式计算,能实现整数的加减乘除运算,输出结果为float 型整数,每个数字之间有一个空格间隔,区分一位数和多位数。
四、测试结果Example1:In:7*(5+3)Out:7 5 3 +*运算结果:56.000000Example2:In:(7+4)*(5/3-1)Out:7 5 +5 3 /1 -*运算结果:7.333333Example3:In:(-2)*5+(7/2)Out: 2 -5 *7 2 /+运算结果:输出错误结果)五、系统不足与经验体会系统不足:不能实现负数运算,能实现小数运算(在同学指导下),能够实现四则运算和取余运算,能输出float型结果。
《计算机组成原理》实验教学教案.doc
实验一运算器实验一、实验目的:(1)结合学过的有关运算器的基本知识,掌握运算器的基木组成、工作原理。
特别是了解算术逻辑运算单元ALU的工作原理;(2)验证多功能算术单元74181、74182的运算功能;(3)熟悉掌握木实验中运算器的数据传输通路。
二、实验要求(1)预习74181、74182的工作原理及逻辑关系;(2)测量数据要求准确;(3)写出实验报告。
三、实验内容1、实验原理实验屮的运算器由两片74LS181以并/串形成8位字长的ALU构成。
运算器的输出经过一个三态门74LS245到ALUO1插座,实验时用8芯排线和内部数据总线BUSDO〜D7插座BUS 1-6中的任一个相连,内部数据总线通过LZDO〜LZD7 显示灯显示;运算器的两个数据输入端分别由二个锁存器74LS273锁存,两个锁存器的输入并联后连至插座ALUBUS,实验时通过8芯排线连至外部数据总线EXDO〜D7插座EXJ1〜EXJ3中的任一个;参与运算的数据来自于8位数据开关KD0~KD7,并经过一三态门74LS245直接连至外部数据总线EXDO〜EXD7, 通过数据开关输入的数据由LDO〜LD7显示。
算术逻辑运算功能发生器74LS181的功能控制信号S3、S2、SI、SO、CN、M并行相连后连至SJ2插座,实验时通过6芯排线连至6位功能开关插座UJ2, 以手动方式用二进制开关S3、S2、SO、CN、M来模拟74LS181的功能控制信号S3、S2、SI、SO、CN、M;其他电平控制信号也由二进制开关来模拟。
2、实验接线本实验主要用到4个主要模块:(1)低8位运算器模块;(2)数据输入并显示模块;(3)数据总线显示模块;(4)功能开关模块。
根据实验原理详细接线如下:(1)ALUBUS 连EXJ3;(2)ALUO1 连BUSI;(3)SJ2 连UJ2;(4)跳线器J23 ± T4连SD;(5)LDDR1、LDDR2、ALUB、SWB四个跳线器拨在左边(手动方式);(6)AR跳线器拨在左边,同时开关AR拨在T”电平。
湘潭大学计算机原理 实验一 算术逻辑单元ALU实验报告
计算机原理与设计实验报告实验一算术逻辑单元ALU姓名: XXX学号: 2013551728班级: 13级软件工程2班实验日期: 2014年 10 月22 日一.实验目的1.理解算术逻辑单元ALU的工作原理。
2.掌握算术逻辑单元ALU的设计方法。
3.验证32位算术逻辑单元ALU的加、减、与、移位功能。
4.按给定数据,完成几种指定的算术和逻辑运算。
二.实验内容算术逻辑单元ALU的设计如图1-1所示。
其中运算器addsub32能实现32位的加减运算。
参加运算的两个32位数据分别为A[31..0]和B[31..0],运算模式由aluc[3..0]的16种组合决定,而aluc[3..0]的值由4位2进制计数器LPM_COUNTER产生,计数时钟是Sclk(图1-1);r[31..0]为输出结果,Z为运算后的零标志位。
ALU功能如表1-1所示。
表1-1 ALU的运算功能注1、* 表示每一位都移至下一更高有效位, “+”是逻辑或,“加”是算术加三.实验步骤(1)设计ALU元件ALU元件设计代码:module alu (a,b,aluc,r,z);input [31:0] a,b;input [3:0] aluc;output [31:0] r;output z;assign r = cal(a,b,aluc);assign z = ~|r;function [31:0] cal;input [31:0] a,b;input [3:0] aluc;casex (aluc)4'bx000: cal=a+b;4'bx100: cal=a-b;4'bx001: cal=a&b;4'bx101: cal=a|b;4'bx010: cal=a^b;4'bx110: cal={b[15:0],16'h0};4'bx011: cal=b<<a[4:0];4'b0111: cal=b>>a[4:0];4'b1111: cal=$signed(b)>>>a[4:0];endcaseendfunctionendmodule(2)以原理图方式建立顶层文件工程原理图如下:(3)查看波形图波形图如下:(4)分配引脚结构图如下:引脚分配表如下:四.实验任务(1)按图1-1所示,在本验证性示例中用数据选择开关(键3控制)的高/低电平选择总线通道上的8位数据进入对应的数据锁存器lpm_latch中;即首先将键3输入高电平,用键2、键1分别向DA[7..0] 置数01010101(55H),这时在数码管4/3上显示输入的数据(55H);然后用键3输入低电平,再用键2、键1分别向DB[7..0]置数10101010(AAH),这时在数码管2/1上显示输入的数据(AAH);这时表示在图1-1中的两个锁存器中分别被锁入了加数55H和被加数AAH。
高中算术测试题及答案
高中算术测试题及答案一、选择题(每题2分,共10分)1. 以下哪个数是最小的正整数?A. 0B. 1C. 2D. 3答案:B2. 两个数的和是52,其中一个数是25,另一个数是多少?A. 27B. 26C. 25D. 24答案:A3. 以下哪个运算是正确的?A. 3 + 4 = 7B. 5 - 2 = 2C. 6 × 3 = 18D. 8 ÷ 2 = 5答案:C4. 一个数的平方是25,这个数是多少?A. 5B. -5C. 5 或 -5D. 25答案:C5. 以下哪个数是5的倍数?A. 10B. 15C. 17D. 21答案:B二、填空题(每题3分,共15分)6. 一个数的绝对值是5,这个数可以是______。
答案:5 或 -57. 两个数的最大公约数是12,这两个数可以是______。
答案:24 和 368. 一个数的立方是-27,这个数是______。
答案:-39. 如果一个数的1/4等于5,那么这个数是______。
答案:2010. 一个数的平方根是4,这个数是______。
答案:16 或 -16(但负数没有实数平方根)三、计算题(每题5分,共20分)11. 计算下列表达式的值:(3 + 4) × (5 - 2)答案:7 × 3 = 2112. 解下列方程:2x + 5 = 13答案:2x = 8,x = 413. 计算下列分数的和:1/2 + 1/3答案:3/6 + 2/6 = 5/614. 解下列不等式:3x - 7 < 5x + 9答案:3x - 5x < 9 + 7,-2x < 16,x > -8四、解答题(每题10分,共20分)15. 如果一个班级有40名学生,每个学生需要支付50元的学费,那么这个班级总共需要支付多少学费?答案:40名学生× 50元/学生 = 2000元16. 一个长方形的长是15厘米,宽是10厘米,求这个长方形的面积和周长。
学前班算术测试题
学前班算术测试题一、填空题1、一个苹果和两个橘子共有()个水果。
2、从一本书上撕下两页,这两页上的页码之和是12,那么撕下的是第()页和第()页。
3、在钟面上,时针从数字3移动到数字6经过了()个小时。
4、我们用()个手指头可以摸到空气。
5、在一张纸上,用剪刀剪掉两角,纸的形状将变成()。
二、选择题1、下列哪个数字是偶数?A. 11B. 19C. 14D. 272、下列哪个图形是三角形?A. B. C. D.3、下列哪个是5的倍数?A. 14B. 16C. 20D. 234、下列哪个是几何图形?A.圆形B.长方形C.正方形D.三角形5、下列哪个是轴对称图形?A. B. C. D.三、简答题1、请简述什么是奇数?什么是偶数?2、请简述什么是周长?什么是面积?3、请简述什么是几何图形?什么是实物图形?4、请简述什么是时间?什么是空间?学前班数学测试题一、填空题1、一个苹果和两个橘子共有()个水果。
2、3个小朋友在玩抛球游戏,每抛一次球需要用()只手。
3、一只青蛙一次能跳上1级台阶,那么跳上5级台阶需要跳()次。
4、一个小朋友有10块巧克力,如果平均分给两个小朋友,每人可以得到()块巧克力。
5、1、2、3、4、5一共是()个数。
6、6个小朋友一起玩“老鹰抓小鸡”的游戏,一共有()只鸡被抓住。
7、用数字7、0、9可以组成()个不同的两位数。
8、把一个正方体分成8个相等的小正方体,一共有()个正方体。
9、一本书有20页,如果每天读()页,那么5天可以读完这本书。
10、1元等于()角,1角等于()分。
二、选择题1、下列哪个数字是偶数?()A. 17B. 19C. 26D. 332、下列哪个图形是三角形?()A.平行四边形B.正方形C.梯形D.直角三角形3、下列哪个是5的倍数?()A. 7B. 12C. 15D. 214、下列哪个是几何图形?()A.圆形B.正方形C.长方形D.三角形5、下列哪个是球体?()A.篮球B.足球C.排球D.乒乓球6、下列哪个是四边形?()A.三角形B.五边形C.六边形D.长方形7、下列哪个是圆柱体?()A.圆锥体B.三棱柱C.长方体D.圆柱体8、下列哪个是立方体?()A.正方体B.长方体C.立方形D.立柱体9、下列哪个是平移现象?()A.电梯的升降B.电风扇的转动C.车轮的滚动D.钟表的走动10、下列哪个是旋转现象?()A.推开门B.翻书C.系鞋带D.取东西学前班数学上册测试题20一、填空题(每空1分,共20分)1、一个苹果和两个橘子共有()个水果。
实验报告算术逻辑单元
一、实验目的1. 理解算术逻辑单元(ALU)的基本原理和功能。
2. 掌握ALU的设计方法和实现过程。
3. 通过实验加深对计算机组成原理的理解。
二、实验原理算术逻辑单元(ALU)是计算机中执行算术运算和逻辑运算的核心部件。
它主要完成加、减、乘、除等算术运算以及与、或、非、异或等逻辑运算。
ALU的设计和实现是计算机组成原理中的基础内容。
三、实验内容1. 设计一个8位ALU,能够完成加、减、乘、除、与、或、非、异或等运算。
2. 使用Verilog HDL语言实现该ALU。
3. 在FPGA平台上进行测试,验证ALU的功能。
四、实验步骤1. 分析ALU的功能需求,确定输入和输出信号。
2. 设计ALU的内部结构,包括运算单元、控制单元和寄存器。
3. 使用Verilog HDL语言编写ALU的代码。
4. 在FPGA平台上进行测试,验证ALU的功能。
五、实验结果与分析1. 实验结果根据实验要求,我们设计了一个8位ALU,能够完成加、减、乘、除、与、或、非、异或等运算。
以下是部分实验结果:(1)加法运算输入:A = 10101010,B = 11001100输出:10111010(2)减法运算输入:A = 11001100,B = 10101010输出:01010100(3)乘法运算输入:A = 10101010,B = 11001100输出:1111100000(4)除法运算输入:A = 11111111,B = 10000000输出:11111111(5)与运算输入:A = 10101010,B = 11001100输出:10001000(6)或运算输入:A = 10101010,B = 11001100输出:11101110(7)非运算输入:A = 10101010输出:01010101(8)异或运算输入:A = 10101010,B = 11001100输出:011001102. 实验分析通过实验,我们成功设计并实现了8位ALU。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验1 算术测试模板代码Teacher.javapublic class Teacher{ int numberOne,numberTwo;String operator="";boolean right;public int giveNumberOne(int n){ numberOne=(int)(Math.random()*n)+1;return numberOne;}public int giveNumberT wo(int n){ numberTwo=(int)(Math.random()*n)+1;return numberTwo;}public String giveOperator(){ double d=Math.random();if(d>=0.5)operator="+";elseoperator="-";return operator;}public boolean getRight(int answer){ if(operator.equals("+")){ if(answer==numberOne+numberTwo) right=true;elseright=false;}else if(operator.equals("-")){ if(answer==numberOne-numberTwo) right=true;elseright=false;}return right;}}ComputerFrame.javaimport java.awt.*;import java.awt.event.*;public class ComputerFrame extends Frame implements ActionListener { TextField textOne,textTwo,textResult;Button getProblem,giveAnwser;Label operatorLabel,message;Teacher teacher;ComputerFrame(String s){ super(s);teacher=new Teacher();setLayout(new FlowLayout());textOne=【代码1】 //创建textOne,其可见字符长是10textTwo=【代码2】 //创建textTwo,其可见字符长是10textResult=【代码3】 //创建textResult,其可见字符长是10operatorLabel=new Label("+");message=new Label("你还没有回答呢");getProblem=new Button("获取题目");giveAnwser=new Button("确认答案");add(getProblem);add(textOne);add(operatorLabel);add(textTwo);add(new Label("="));add(textResult);add(giveAnwser);add(message);textResult.requestFocus();textOne.setEditable(false);textTwo.setEditable(false);【代码4】//将当前窗口注册为getProblem的ActionEvent事件监视器【代码5】//将当前窗口注册为giveAnwser的ActionEvent事件监视器【代码6】//将当前窗口注册为textResult的ActionEvent事件监视器 setBounds(100,100,450,100);setVisible(true);validate();addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) { System.exit(0);}});}public void actionPerformed(ActionEvent e){ if(【代码7】) //判断事件源是否是getProblem{ int number1=teacher.giveNumberOne(100);int number2=teacher.giveNumberTwo(100);String operator=teacher.givetOperator();textOne.setText(""+number1);textTwo.setText(""+number2);operatorLabel.setText(operator);message.setText("请回答");textResult.setText(null);}if(【代码8】) //判断事件源是否是giveAnwser{ String answer=textResult.getText();try{int result=Integer.parseInt(answer);if(teacher.getRight(result)==true){ message.setText("你回答正确");}else{ message.setText("你回答错误");}}catch(NumberFormatException ex){ message.setText("请输入数字字符");}}textResult.requestFocus();validate();}}MainClass.javapublic class MainClass{ public static void main(String args[]){ ComputerFrame frame;frame=【代码9】//创建窗口,其标题为:算术测试}}实验2 信号灯2.模板代码SignalCanvas.javaimport java.awt.*;public class SignalCanvas extends Canvas{ int red,green,yellow,x,y,r;SignalCanvas(){ setBackground(Color.white);}public void setRed(int r){ red=r;}public void setGreen(int g){ green=g;}public void setYellow(int y){ yellow=y;}public void setPosition(int x,int y){ this.x=x;this.y=y;}public void setRadius(int r){ this.r=r;}public void paint(Graphics g){ if(red==1){ g.setColor(Color.red);}else if(green==1){ g.setColor(Color.green);}else if(yellow==1){ g.setColor(Color.yellow);}g.fillOval(x,y,2*r,2*r);}}SignalFrame.javaimport java.awt.*;import java.applet.*;import java.awt.event.*;public class SignalFrame extends Frame implements ItemListener { Choice choice;SignalCanvas signal=null;String itemRed="红灯",itemYellow="黄灯",itemGreen="绿灯";public SignalFrame(){ choice=【代码1】 //创建choice【代码2】 //创建choice添加itemRed【代码3】 //创建choice添加itemYellow【代码4】 //创建choice添加itemGreen【代码5】//将当前窗口注册为choice的ItemEvent事件监视器add(choice,BorderLayout.NORTH);try{ Class cs=Class.forName("SignalCanvas");signal=(SignalCanvas)cs.newInstance();add(signal,BorderLayout.CENTER);}catch(Exception e){ add(new Label("您还没有编写SignalCanvas类"),BorderLayout.CENTER); }setBounds(100,100,360,300);setVisible(true);validate();addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);}});}public void itemStateChanged(ItemEvent e){ String item= 【代码6】// choice返回被选中的条目int w=signal.getBounds().width;int h=signal.getBounds().height;int m=Math.min(w,h);signal.setRadius(m/6);if(item.equals(itemRed)){ if(signal!=null){ signal.setRed(1);signal.setYellow(0);signal.setGreen(0);signal.setPosition(w/3,0);signal.repaint();}}else if(item.equals(itemYellow)){ if(signal!=null){ signal.setRed(0);signal.setYellow(1);signal.setGreen(0);signal.setPosition(w/3,h/3);signal.repaint();}}else if(item.equals(itemGreen)){ if(signal!=null){ signal.setRed(0);signal.setYellow(0);signal.setGreen(1);signal.setPosition(w/3,2*h/3);signal.repaint();}}}}SignalMainClass.javapublic class SignalMainClass{ public static void main(String args[]){ SignalFrame frame;frame=new SignalFrame() ;frame.setTitle("信号灯");}}实验3 布局与日历2.模板代码CalendarBean.javaimport java.util.Calendar;public class CalendarBean{String day[];int year=2005,month=0;public void setYear(int year){ this.year=year;}public int getYear(){ return year;}public void setMonth(int month){ this.month=month;}public int getMonth(){ return month;}public String[] getCalendar(){ String a[]=new String[42];Calendar 日历=Calendar.getInstance();日历.set(year,month-1,1);int 星期几=日历.get(Calendar.DAY_OF_WEEK)-1;int day=0;if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) { day=31;}if(month==4||month==6||month==9||month==11){ day=30;}if(month==2){ if(((year%4==0)&&(year%100!=0))||(year%400==0)){ day=29;}else{ day=28;}}for(int i=星期几,n=1;i<星期几+day;i++){a[i]=String.valueOf(n) ;n++;}return a;}}CalendarFrame.javaimport java.util.*;import java.awt.*;import java.awt.event.*;import java.applet.*;public class CalendarFrame extends Frame implements ActionListener{ Label labelDay[]=new Label[42];Button titleName[]=new Button[7];String name[]={"日","一","二","三", "四","五","六"};Button nextMonth,previousMonth;int year=2006,month=10;CalendarBean calendar;Label showMessage=new Label("",Label.CENTER);public CalendarFrame(){ Panel pCenter=new Panel();【代码1】//将pCenter的布局设置为7行7列的GridLayout 布局。