自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (1)
  • 收藏
  • 关注

原创 js简易计算器的实现

实训的时候学了HTML5,学了一点点css和js,一起做了一个简易计算器下面是源代码:<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>计算器</title> <style> *{ margin: 0; p...

2019-07-14 15:25:39 413

原创 1002 写出这个数 (C语言)

读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入格式:每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10​100​​ 。输出格式:在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。输入样例:1234567890987654321123456789输出样例:yi san ...

2019-07-13 12:53:14 184

原创 1001 害死人不偿命的(3n+1)猜想 (C语言实现)

卡拉兹(Callatz)猜想:对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数...

2019-07-13 11:58:39 128

原创 数据结构笔记之树

树是N个结点的有限集合,N为0时,称为空树,作为空树,这是一种特殊情况。在任意一颗非空树中应满足:1.有且仅有一个特定的称为根的结点。2.当N>1时,其余结点可分为m(m>0)个互不相交的有限集合T1,T2,···,Tm,其中每一个集合本身又是一棵树,并且成为根结点的子树。树的相关术语:根结点:树只有一个根结点。结点的度:结点拥有的子树的数量。度为0时称为终端结点或叶子结点...

2019-07-13 08:48:55 154

原创 数据结构笔记之队列

队列是只允许在一端进行插入(队尾),而在另一端进行删除(队首)的线性表。先进入队列的元素必然先离开队列.即先进先出(FIFO)顺序队列:#define MAXSIZE 50 //队列中元素最大个数typedef struct {ElemType data[MAXSIZE]; //存放队列元素int front,rear; //队头指针和队尾指针}SqQueue;...

2019-07-13 07:42:28 173

原创 数据结构笔记之栈

栈:只允许在一端进行插入或删除的线性表。栈顶:栈中允许插入和删除的一端。栈底:固定的,不允许进行插入和删除的另一端。栈的特点:1.栈是受限的线性表,具有线性关系。2.后进先出...

2019-07-12 08:40:35 112

原创 双链表

双链表的定义typedef struct DNode{ElemType data; //数据域struct DNode *prior,*next; //前驱和后继指针}DNode,*DLinkList;双链表的操作:插入 删除1.插入操作在双链表中p所指结点后插入结点s的主要片段代码如下:s->next=p->next;p->next-&gt...

2019-07-11 19:40:54 80

原创 数据结构笔记之线性表的链式存储

线性表的链式存储是指通过一组任意的存储单元来存储线性表中的数据元素。为了建立起数据元素之间的线性关系,对每个链表结点,除了存放元素自身的信息外,还需要存放一个指向其后继的指针。typedef struct LNode{ //定义单链表结点类型ElemType data; //数据域struct LNode *next; //指针域}LNode,*LinkLis...

2019-07-11 08:56:25 159

原创 数据结构笔记之线性表的顺序存储

线性表是具有相同数据类型的n个数据元素的有限序列,除第一个元素外,每个元素有且仅有一个直接前驱。除最后一个元素外,每个元素有且仅有一个直接后继。线性表的特点如下:1.表中元素个数有限。2.表中元素具有逻辑上的顺序性,在序列中各元素排序有其先后次序。3.表中元素都是数据元素,每个元素都是单个元素。4.表中数据元素的数据类型都相同,这意味着每个元素占有相同大小的存储空间。5.表中元素具有...

2019-07-10 08:44:24 248

原创 存储器层次结构

上图展示了一个典型的存储器层次结构。一般而言,从高层往底层走,存储设备变得更慢、更便宜和更大。在最高层(L0),是少量快速的CPU寄存器,CPU可以在一个时钟周期内访问它们。1.存储器层次结构中的缓存高速缓存(cache)是一个小而快速的存储设备,它作为存储在更大、也更慢的设备中的数据对象的缓存区域。使用高速缓存的过程称为缓存。存储器层次结构的中心思想是,对于每个k,位于k层的更快更小的存...

2019-06-16 20:28:17 326

原创 局部性

一个编写良好的计算机程序常常具有良好的局部性。也就是说,它们倾向于引用邻近于其他引用过的数据项的数据项,或者最近引用过的数据项本身。这种倾向性,被称为局部性原理。局部性通常有两种不同的形式:时间局部性和空间局部性。在一个具有良好时间局部性的程序中,被引用过一次的内存位置很可能在不远的将来再被多次引用。在一个具有良好空间局部性的程序中,如果一个内存位置被引用了一次,那么程序很可能在不远的将来引用附...

2019-06-16 19:42:45 144

原创 存储器层次结构——磁盘存储

磁盘是广为应用的保存大量数据的存储设备,存储数据的数量级可以达到几百到几千千兆字节,而基于RAM的存储器只能有几百或几千兆字节。但是,从磁盘上度信息的时间为毫秒级,比从DRAM读慢了10万倍,比从SRAM读慢了100万倍。1.磁盘构造磁盘是由盘片构成的。每个盘片有两面或者称为表面,表面覆盖着磁性记录材料。盘片中央有一个可以旋转的主轴,它使得盘片以固定的旋转速率旋转。图6-9a展示了一个典型...

2019-06-10 23:38:12 846

原创 存储器层次结构——存储技术

随机访问存储器(RAM)随机访问存储器分为两类:静态的(SRAM)和动态的(DRAM)。静态RAM比动态RAM更快,但价格也贵得多。SRAM用来作高速缓存存储器,既可以在CPU芯片上,也可以在片下。DRAM用来作为主存以及图形系统的帧缓冲区。1.静态RAMSRAM将每个位存储在一个双稳态存储器单元里。每个单元使用一个六晶体管电路来实现的。这个电路有这样一个属性,它可以无限期地保持在两个不同的...

2019-06-09 23:39:34 382

原创 PIPE各阶段的实现

1.PC选择和取指阶段这个阶段必须选择程序计数器PC的当前值,并且预测下一个PC值。PC选择逻辑从三个程序计数器源中进行选择。当一条预测错误的分支进入访存阶段时,会从流水线寄存器M(信号M_valA)中读出该指令valP的值(指明下一条指令的地址),当ret指令进入写回阶段时,会从流水线寄存器W(信号W_valM)中读出返回地址。其他情况会使用存放在流水线寄存器F(信号F_predPC)中的PC...

2019-06-08 23:07:22 654

原创 优化程序性能——总结

优化程序性能的基本策略:(1)高级设计。为遇到的问题选择适当的算法和数据结构。要特别警觉,避免使用那些会渐进地产生糟糕性能的算法或编码技术。(2)基本编码原则。避免限制优化的因素,这样编译器就能产生高效的代码。·消除连续的函数调用。在可能时,将计算移到循环外。考虑有选择地妥协程序的模块性以获得更大的效率。·消除不必要的内存引用。引入临时变量来保存中间结果。只有在最后的值计算出来时,才将结果...

2019-06-07 23:26:01 273

原创 优化程序性能(5)——理解内存性能

所有的现代处理器都包含一个或多个高速缓存(cache)存储器,以对这样少量的存储器提供快速的访问。这里我们只考虑所有的数据都存放在高速缓存中的情况。我们知道,现代处理器有专门的功能单元来执行加载和存储操作,这些单元有内部的缓冲区来保存未完成的内存操作请求集合。一.加载的性能一个包含加载操作的程序的性能既依赖于流水线的能力,也依赖于加载单元的延迟。对于任何数据类型的组合和合并操作来说,CPE从...

2019-06-07 23:19:15 190

原创 优化程序性能(4)

通过前面的学习,我们看到,如果程序中有某条数据相关链,这条链上的所有延迟之和等于T,那么这个程序至少需要T个周期才能执行完。我们还能看到,功能单元的吞吐量界限也是程序执行时间的一个下界。也就是说,假设一个程序一共需要N个某种运算的计算,而微处理器只有C个能够执行这个操作的功能单元,并且这些功能单元的发射时间为I。那么这个程序的执行至少需要N·I/C个周期。这次学习我们会考虑其他一些制约程序在实际...

2019-06-06 20:32:33 103

原创 优化程序性能(3)——提高并行性

在之前的学习中,程序的性能是受运算单元的延迟限制的。正如我们表明的,执行加法和乘法的功能单元是完全流水线化的,这意味着它们可以每个时钟周期开始一个新操作,并且有些操作可以被多个功能单元执行。硬件具有以更高速率执行乘法和加法的潜力,但是代码不能利用这种能力,即使是使用循环展开也不能,这是因为我们将积累值放在一个单独的变量acc中,在前面的计算完成之前,都不能计算acc的新值(顺序依赖)。虽然计算ac...

2019-06-06 19:59:14 2186

原创 优化程序性能(2)

延迟:表示完成运算所需的总时间发射时间:表示两个连续的同类型运算之间需要的最小时钟周期数容量:表示能够执行该运算的功能单元的数量我们看到,从整数运算到浮点运算,延迟是增加的。还可以看到加法和乘法运算的发射时间都为1,意思是说在每个时钟周期,处理器都可以开始一条新的这样的运算。这种很短的发射时间都是通过使用***流水线***实现的。发射时间为1的功能单元被称为***完全流水线化的***:每个...

2019-06-05 23:31:34 341

原创 优化程序性能(1)

我们知道,大多数编译器,包括GCC,向用户提供了一些对他们所使用的优化的控制,最简单的控制就是指定优化级别。例如,命令行选项“-Og”调用是让GCC使用一组基本的优化、以选项“-O1”或更高(如“-O2”或“-O3”)调用GCC会让它使用更大量的优化。但是,优化编译器存在着局限性:①.编译器必须很小心地对程序只使用安全的优化②.编译器必须假设不同的指针可能会指向内存中的同一个位置③.大多数编译器...

2019-06-04 23:30:18 672

原创 异常处理

处理器中很多事情都会导致异常控制流,此时,程序执行的正常流程被破坏掉。异常可以由程序执行从内部产生,也可以由某个外部信号从外部产生,这里我们介绍三种内部异常:(1)halt指令(2)有非法指令和功能码组合的指令(3)取指或数据读写试图访问一个非法地址。我们把导致异常的指令称为异常指令,在一个完整的设计中,处理器遇到异常会继续调用异常处理程序。细节问题:1.首先,可能同时有多条指令引起异常,例如...

2019-06-03 23:20:27 200

原创 流水线冒险

流水线冒险回顾一下常用五阶段流水线:F(取指)D(译码)E(执行)M(访存)W(写回)注意:对寄存器文件的写只有在时钟上升的时候才会更新!数据冒险的原因:对寄存器文件的读写是在不同阶段进行的 1.用暂停来避免数据冒险 暂停时,处理器会停止流水线中一条或多条指令,直到冒险条件不再满足。 在本该正常处理的某指令阶段中,我们每次要把一条指令阻塞在译码阶段,就在执行阶段...

2019-06-02 23:28:18 2212 1

计算器.html

使用js实现简单计算器,代码比较短,只要稍微懂一点应该就能看得懂

2019-07-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除