欢迎来到天天文库
浏览记录
ID:47115759
大小:268.78 KB
页数:16页
时间:2019-08-06
《中南大学 计算机体系结构实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、计算机体系结构课程设计学院: 信息科学与工程学院专业班级: 指导老师: 学号: 姓名: 目录实验1对指令操作码进行霍夫曼编码3一、实验目的3二、实验内容3三、设计思路4四、关键代码4五、实验截图5六、源代码5实验2使用LRU方法更新Cache8一、实验目的8二、实验内容8三、设计思路9四、程序截图9五、实验代码9实验总结16参考文献16实验1对指令操作码进行霍夫曼编码一、实验目的了解和掌握指令编码的基本要求和基本原理二、实验内容1.使用编程工具编写一个程序,对一组指令进行霍夫曼编码,并输出最后的编码结果以及对指令码的长度进行
2、评价。与扩展操作码和等长编码进行比较。2.问题描述以及问题分析举例说明此问题,例如:P1P2P3P4P5P6P70.450.300.150.050.030.010.01有一组指令的操作码共分七类,它们出现概率如下表所示:对此组指令进行HUFFMAN编码正如下图所示:最后得到的HUFFMAN编码如下表所示:P1P2P3P4P5P6P7010110111011110111110111111最短编码长度为:H=0.45*1+0.30*2+0.15*3+0.05*4+0.03*5+0.01*6+0.01*6=-1.95.要对指令的操作码进行H
3、UFFMAN编码,只要根据指令的各类操作码的出现概率构造HUFFMAN树再进行HUFFAM编码。此过程的难点构造HUFFMAN树,进行HUFFAM编码只要对你所生成的HUFFMAN树进行中序遍历即可完成编码工作。三、设计思路观察上图,不难看出构造HUFFMAN树所要做的工作:1、先对各指令操作码的出现概率进行排序,构造一个有序链表。2、再取出两个最小的概率节点相加,生成一个生的节点加入到链表中,同时从两表中删除此两个节点。3、在对链表进行排序,链表是否只有一个节点,是则HUFFAN树构造完毕,否则继续做2的操作。为此设计一个工作链表(
4、链表的元素时类,此类的功能相当结构。)、HUFFMAN树节点、HUFFMAN编码表节点。四、关键代码哈夫曼树重点在于如何排列权值大小不同的结点的顺序 private int leafNum; //叶子结点个数 private HaffmanNode[] hnodes; //哈夫曼树的结点数组 public HaffManCode(double[] weight) //构造指定权值集合的哈夫曼树 {
5、int n = weight.length; //n个叶子结点 this.leafNum = n; this.hnodes = new HaffmanNode[2*n-1]; //n个叶子结点的哈夫曼树共有2n-1个结点 for(int i=0; i6、int i=0; i7、 for(int j=0; j8、记下最小权值 x1 = j; //x1记下最小权值结点的下标 } else
6、int i=0; i7、 for(int j=0; j8、记下最小权值 x1 = j; //x1记下最小权值结点的下标 } else
7、 for(int j=0; j8、记下最小权值 x1 = j; //x1记下最小权值结点的下标 } else
8、记下最小权值 x1 = j; //x1记下最小权值结点的下标 } else
此文档下载收益归作者所有