计算机组成原理实验二_第1页
计算机组成原理实验二_第2页
计算机组成原理实验二_第3页
计算机组成原理实验二_第4页
计算机组成原理实验二_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、实验2 运算器的编程实现 一、实验目的1、加深对计算机中运算器的基本概念、运算方法和基本原理的理解。2、提高学生对计算机编程语言掌握的熟练程度。二、实验内容运用一种编程语言实现计算器的基本功能。思考:1、计算机中数据是如何表示的? 2、计算机中二进制数的加、减、乘、除四则运算如何实现? 3、运算器的基本结构和功能有哪些?三、实验结果分析1、计算机中数据是如何表示的? 计算机的数据表示方法是二进制。2、计算机中二进制的加减乘除四则运算是如何实现的? 各种数据在计算机中表示的形式称为机器数。机器数有无符号和带符号之分,为了便于运算,带符号的机器数可以采用源码、反码和补码的等不同的编码方法,这叫码制

2、最高位最示符号位:0表示正号,1表示负号,正数的补码和反码是相同的。 反码=原码取反 补码=反码+1二进制的运算法则1)二进制加法的进位法则是“逢二进一”。 0+0=0 1+0=1 0+1=1 1+1=0(进位)2)二进制减法的进位法则是“借一为二”。 00=0 10=1 11=0 01=1(借位)3)二进制乘法规则。 0*0=0 1*0=0 0*1=0 1*1=1 4)二进制除法即是乘法的逆运算,类似十进制除法。加法 0+0=0,0+1=1+0=1,1+1=10 减法 00=0,10=1,11=0,01=-1,10100-1010=1010 乘法 00=0,01=10=0,11=1 除法 0

3、1=0,11=1 只有0和1两个数码,基数为二。加法运算步骤:(1)首先是最右数码位相加。这里加数和被加数的最后一位分别为“0”和“1”,根据加法原则可以知道,相加后为“1”。(2)再进行倒数第二位相加。这里加数和被加数的倒数第二位都为“1”,根据加法原则可以知道,相加后为“(10)2”,此时把后面的“0”留下,而把第一位的“1”向高一位进“1”。(3)再进行倒数第三位相加。这里加数和被加数的倒数第二位都为“0”,根据加法原则可以知道,本来结果应为“0”,但倒数第二位已向这位进“1”了,相当于要加“被加数”、“加数”和“进位”这三个数的这个数码位,所以结果应为0 1=1。(4)最后最高位相加。

4、这里加数和被加数的最高位都为“1”,根据加法原则可以知道,相加后为“(10)2”。一位只能有一个数字,所以需要再向前进“1”,本身位留下“0”,这样该位相加后就得到“0”,而新的最高位为“1减法运算步骤(1)首先最后一位向倒数第二位借“1”,相当于得到了(10)2,也就是相当于十进制数中的2,用2减去1得1。(2)再计算倒数第二位,因为该位同样为“0”,不及减数“1”大,需要继续向倒数第三位借“1”(同样是借“1”当“2”),但因为它在上一步中已借给了最后一位“1”(此时是真实的“1”),则倒数第二位目前为1,与减数“1”相减后得到“0”。(3)用同样的方法倒数第三位要向它们的上一位借“1”(

5、同样是当“2”),但同样已向它的下一位(倒数第二位)借给“1”(此时也是真实的“1”),所以最终得值也为“0”。(4)被减数的倒数第四位尽管与前面的几位一样,也为“0”,但它所对应的减数倒数第四位却为“0”,而不是前面几位中对应的“1”,它向它的高位(倒数第五位)借“1”(相当于“2”)后,在借给了倒数第四位“1”(真实的“1”)后,仍有“1”余,1 0=1,所以该位结果为“1”。(5)被减数的倒数第五位原来为“1”,但它借给了倒数第四位,所以最后为“0”,而此时减数的倒数第五位却为“1”,这样被减数需要继续向它的高位(倒数第六位)借“1”(相当于“2”),21=1。(6)被减数的最后一位本来

6、为“1”,可是借给倒数第五位后就为“0”了,而减数没有这个位,这样结果也就是被减数的相应位值大小,此处为“0”。在二进制数的加、减法运算中一定要联系上十进制数的加、减法运算方法,其实它们的道理是一样的,也是一一对应的。在十进制数的加法中,进“1”仍就当 “1”,在二进制数中也是进“1”当“1”。在十进制数减法中我们向高位借“1”当“10”,在二进制数中就是借“1”当“2”。而被借的数仍然只是减少 了“1”,这与十进制数一样。乘法运算步骤把二进制数中的“0”和“1”全部当成是十进制数中的“0”和“1”即可。根据十进制数中的乘法运算知道,任何数与“0”相乘所得的积均为“0”,这一点同样适用于二进制

7、数的乘法运算。只有“1”与“1”相乘才等于“1”。乘法运算步骤:(1)首先是乘数的最低位与被乘数的所有位相乘,因为乘数的最低位为“0”,根据以上原则可以得出,它与被乘数(1110)2的所有位相乘后的结果都为“0”。(2)再是乘数的倒数第二位与被乘数的所有位相乘,因为乘数的这一位为“1”,根据以上原则可以得出,它与被乘数(1110)2的高三位相乘后的结果都为“1”,而于最低位相乘后的结果为“0”。(3)再是乘数的倒数第三位与被乘数的所有位相乘,同样因为乘数的这一位为“1”,处理方法与结果都与上一步的倒数第二位一样,不再赘述。(4)最后是乘数的最高位与被乘数的所有位相乘,因为乘数的这一位为“0”,

8、所以与被乘数(1110)2的所有位相乘后的结果都为“0”。(5)然后再按照前面介绍的二进制数加法原则对以上四步所得的结果按位相加(与十进制数的乘法运算方法一样),结果得到(1110)2(0110)2=(1010100)2。除法运算步骤(1)首先用“1”作为商试一下,相当于用“1”乘以除数“110”,然后把所得到的各位再与被除数的前4位“1001”相减。按照减法运算规则可以得到的余数为“011”。(2)因为“011”与除数“110”相比,不足以被除,所以需要向低取一位,最终得到“0111”,此时的数就比除数“110”大了,可以继续除 了。同样用“1”作为商去除,相当于用“1”去乘除数“110”,

9、然后把所得的积与被除数中当前四位“0111”相减。根据以上介绍的减法运算规则可以得 到此步的余数为“1”。(3)因为“1”要远比除数“110”小,被除数向前取一位后为“11”,仍不够“110”除,所以此时需在商位置上用“0”作为商了。(4)然后在被除数上继续向前取一位,得到“110”。此时恰好与除数“110”完全一样,结果当然是用“1”作为商,用它乘以除数“110”后再与被除数相减,得到的余数正好为“0”。证明这两个数能够整除。这样一来,所得的商(1101)2就是两者相除的结果。3、 运算器的基本结构和功能有哪些?(1)基本结构: 运算器包括寄存器、执行部件和控制电路3个部分。在典型的运算器中

10、有3个寄存器:接收并保存一个操作数的接收寄存器;保存另一个操作数和运算结果的累加寄存器;在进行乘、除运算时保存乘数或商数的乘商寄存器。执行部件包括一个加法器和各种类型的输入输出门电路。 运算器主要由算术逻辑部件、通用寄存器组和状态寄存器组成。 算术逻辑部件ALU。ALU 主要完成对二进制信息的定点算术运算、逻辑运算和各种移位操作。通用寄存器组近期设计的机器的运算器都有一组通用寄存器。它主要用来保存参加运算的操作数和运算的结果。 状态寄存器状态寄存器用来记录算术、逻辑运算或测试操作的结果状态。程序设计中,这些状态通常用作条件转移指令的判断条件,所以又称为条件码寄存器。)(2)基本功能: 运算器的

11、基本功能是完成对各种数据的加工处理,例如算术四则运算,与、或、求反等逻辑运算,算术和逻辑移位操作,比较数值,变更符号,计算主存地址等。4. 实验心得 计算机的应用领域极其广泛,但不论其应用在什么地方,信息在机器内部的形式都是一致的,即均为0和1组成的各种编码。通过此次实验,让我对计算机中的运算器有了更深一步的了解。运算器包括寄存器、执行部件和控制电路三个部分。运算器主要由算术逻辑部件、通用寄存器组和状态寄存器组成。以及运算器的功能,运算器的基本功能是完成对各种数据的加工处理,例如算术四则运算,与、或、求反等逻辑运算,算术和逻辑移位操作,比较数值,变更符号,计算主存地址等。运算器中还要设置相应的

12、部件,用来记录一次运算结果的特征情况,如是否溢出,结果的符号位,结果是否为零等。 计算机所采用的运算器类型很多,从不同的角度分析,就有不同的分类方法。从小数点的表示形式可分为定点运算器和浮点运算器。定点运算器只能做定点数运算,特点是机器数所表示的范围较小,但结构较简单。浮点运算器功能较强,既能对浮点数,又能对定点数进行运算,其数的表示范围很大,但结构相当复杂。从进位制方面分为二进制运算器和十进制运算器。一般计算机都采用二进制运算器,随着计算机广泛应用于商业和数据处理,越来越多的机器都扩充十进制运算的功能,使运算器既能完成二进制的运算,也能完成十进制运算。 功能实现:附码1:import jav

13、a.util.Scanner;public class Test public static void main(String args) System.out.println(请输入一个数); Scanner input = new Scanner(System.in); int num1 = input.nextInt(); System.out.println(请再输入一个数);int num2 = input.nextInt(); System.out.println(请输入运算符:(+-*/) );String s = input.next();if(s.equals(+) int

14、result = num1 + num2; System.out.println(十进制结果: + result); String binary = Integer.toBinaryString(result); System.out.println(二进制结果: + binary);else if(s.equals(-)int result1 = num1-num2;System.out.println(十进制结果: + result1); String binary = Integer.toBinaryString(result1); System.out.println(二进制结果: +

15、 binary);else if(s.equals(*) int result2 = num1*num2; System.out.println(十进制结果: + result2); String binary = Integer.toBinaryString(result2); System.out.println(二进制结果: + binary);else if(s.equals(/) int result3 = num1/num2; if(num2=0) System.out.println(除数不能为零); System.out.println(十进制结果: + result3); S

16、tring binary = Integer.toBinaryString(result3); System.out.println(二进制结果: + binary);附码2:var calc = first:0, firsts:0, second:0, seconds:0, result:0, init:function() this.first = parseFloat(document.getElementById(first).value); this.second = parseFloat(document.getElementById(second).value); , setRe

17、sult:function()document.getElementById(result).value = this.result, add:function() this.init(); this.result = this.first + this.second; this.setResult(); , minus:function() this.init(); this.result = this.first - this.second; this.setResult(); , plus:function() this.init(); this.result = this.first

18、* this.second; this.setResult(); , divide:function() this.init(); this.result = this.first / this.second; this.setResult(); , chf:function() this.first = parseFloat(document.getElementById(first).value); this.result = this.first * this.first; this.setResult(); , ans:function() this.first = parseFloa

19、t(document.getElementById(first).value); this.result = Math.sqrt(this.first); this.setResult(); , ftoshs:function() this.first = parseFloat(document.getElementById(first).value); this.result = this.first.toString(2); this.setResult(); , resshs:function() x = parseFloat(document.getElementById(result

20、).value); this.result = x.toString(2); this.setResult(); , zhua:function() a = document.getElementById(firsts).value; x = a.indexOf(.); /alert(a.length); if(x = -1) a = parseFloat(a); a = parseInt(a,2); else x = a.length - x-1; a = a.replace(.,); a = parseInt(a,2); a = parseFloat(a); a = a / Math.po

21、w(2,x); document.getElementById(first).value = a; , zhub:function() b = document.getElementById(seconds).value; x = b.indexOf(.); if(x = -1) b = parseFloat(b); b = parseInt(b,2); else x = b.length - x-1; b = b.replace(.,); b = parseInt(b,2); b = parseFloat(b); b = b / Math.pow(2,x); document.getElem

22、entById(second).value = b; ,addq:function() a = document.getElementById(firsts).value;b = document.getElementById(seconds).value; x = a.indexOf(.);if(x != -1) x = a.length - x-1; a = a.replace(.,); a = parseInt(a,2); a = parseFloat(a); a = a / Math.pow(2,x); x = b.indexOf(.); x = b.length - x-1; b = b.replace(.,); b = parseInt(b,2); b = parseFloat(b); b = b / Math.pow(2,x); else a = parseInt(a,2);b = parseInt(b,2); x = a + b;x = x.toString(2); document.getElementById(result).value = x; , minusq:function() a = parseFloat(document.getElementById(firsts).value); a = parseInt(a,2); b = parseFloat

温馨提示

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

评论

0/150

提交评论