第一章 导论

看上去几乎一样的两个操作,得到的结果却不一样,实质上是因为他们触发了两个不同的操作集合

前面几分钟的例子主要表达的是:由于计算机内部的基础的逻辑结构和我们习惯的不太一样,所以会引发一些问题

这决定了想要使用计算机来模仿人类逻辑是需要经过“转义”的,即意义转化,本来不一样的两种概念,可以通过协议规则来使他们一一对应

但是由于两种结构是不一样的,难免会出现一些不符合人类逻辑推理不出来的问题,核心原因是我们不懂得从人类逻辑->机器逻辑->机器结果->人类结果的转换

 

unsigned,无符号,最后会变成ffffffff

这个显然就是截断问题,一个是直接显性赋值截断了,一个是计算溢出了,高程课应该都会讲

为什么不直接写成: i < len ?

因为这里i是用来访问元素的下标,len是数组长度,下标从0开始,长度从1开始,所以要-1才能正确遍历完数组,否则会超过数组范围

访问违例、访问存储器越权、越界

 

越位截断了最高位是1认定成负数了吧

因为0的存在,正整数范围比负整数范围少1

从这些内容来看,感觉这课对应的教材应该是《深入理解计算机系统》

存储层次,cache结构的存在,局部性的利用

左边的在内存中的地址是连续的,右边的复制要跳跃

行连续和列连续了,地址不连续慢一些

最终用户提出的问题、都需要先抽象成算法

这门课和计算机组成原理不尽相同,在我们学校计组和系统结构是真正意义上的两门课,可以说计组是系统结构的硬件基础,而系统结构是计组的理论基础。两者其实不分先后,但硬要说的话推荐先学完这门课再去学计组,你会对计算机的底层运作有更加系统的认识,理解记忆起来也会更加容易。(这里推荐先去看王爽老师的《汇编语言》(Intel指令),这样在看第五章节会轻松许多)

按照这个顺序来学,半导体物理==》模拟电路==》数字电路==》计组==》后面随便,这门课难学是因为你不知道在硬件上电信号是怎么传递的,然后只能靠已有的这些计算机理论来硬套。

可惜现在CS的培养计划,前三门课都被砍的差不多了。。。

正常啊,计算机行业发展这么快,本科四年毕竟时间有限,如果想对标行业发展和就业环境,就真的没必要学一些太底层的知识了。模数电如果有哪怕一点点学习的必要,半导体物理这种课,顶多电子专业的会拿来当专业课吧,这个是真没必要。2022-04-06 04:202回复

不学这些,你看硬件就是个黑盒,只能靠书本上写的 输入什么 =》输出什么 的规律进行总结。本来CS就是个交叉学科,硬件 + 算法, 缺一不可。许多系统设计的原因都是硬件不支持,才只能靠算法软解决。因此我觉得花一学期/一年的时间来学习这三门课是毫不为过的。2022-04-06 08:551

回复 @小白弓箭手 :可能我们两个对于程序员的定义不同吧。我是通信专业,模数电也学,但是半导体物理则是由更底层的电子专业学,更别提计算机、软件专业了。随着时代发展,有些东西并不是程序员需要懂的,比如半导体物理,甚至到模数电,特别是对于软件专业。因为他们干一辈子活都没有必要去了解机箱某个芯片的制造工艺是啥,电压电流特性如何,这些是硬件工程师干的活。他们只需要让自己写的代码满足需求就够了。想要面面俱到,最后却变得四不像,这就得不偿失了(不过开课浅学一下倒也没啥,反正学校确实很多没有意义的水课)2022-04-07 03:323回复

最多一部分的数电就可以了,往后再是机组,专研半导体没有必要,程序开发者是是计算机使用者,不是制造者

408命题组组长

浮点数定点数、门电路和加法器、加法器标志、加减溢出等

可以csapp和计算机系统基础袁春风两本书合起来看。袁春风老师那本书基本是csapp把第四章改成程序执行,第九章虚拟内存和第六章存储体系结构合并,第10章io扩充硬件,去掉第11/12章,其他章节基本对应

GPRs(General Purpose Register):通用寄存器组。早期就是累加器

MDR:Memory Data Register,存储器数据寄存器

PC(专用寄存器)(program counter): 程序计数器,要执行的指令的地址先从PC送入MAR

MAR  memory address register  主存的地址寄存器

IR 指令寄存器 

MAR放的是地址,肯定要通过MDR取指令

mar存的是指令的地址,还要根据这个地址在存储器中找到指令

此处的存储器是主存

计算机怎样区分数据指令?

根据数据和地址的不同寻址方式从而找出数据或地址

给计算机第一条指令的位置,由程序管理数据的位置,即可区分

格式:前几个bit是属于指令部分

硬件软件接口

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
算法导论第16章16.2-5题目描述: 证明:在所有的用于求解单源最短路径问题的算法中,Bellman-Ford算法是唯一一个能够处理权值可以是负数的图的算法。 证明如下: 首先,给定一个图G和一个源节点s,我们假设该图G中存在至少一条从源节点s到另一个节点v的路径,使得该路径上至少有一条边的权值为负数。我们的任务是要找到一条从源节点s到节点v的最短路径。 考虑Bellman-Ford算法的实现过程。该算法通过迭代更新每个节点的松弛值来找到最短路径。在算法的每一次迭代中,我们对所有的边进行一次松弛操作。如果图中存在一条从源节点s到节点v的最短路径,那么这条路径上的所有边都会被松弛,且最终计算出的节点v的最短路径长度将会是这条最短路径的长度。 现在我们考虑一种情况:假设在算法的第k次迭代中,我们已经找到了从源节点s到节点v的长度为k的最短路径。此时考虑该最短路径的最后一条边(u,v),且该边的权值为负数。由于在Bellman-Ford算法中,我们是对所有边进行松弛操作的,因此在第k+1次迭代中,我们一定会通过这条边(u,v)来进行松弛操作。此时,由于(u,v)的权值为负数,因此算法将会通过这条边来缩短v的距离值,使得v的距离值变成小于k的某个值。这就意味着我们找到了一条从源节点s到v的更短的路径,与假设矛盾。 因此,我们得出结论:在所有的用于求解单源最短路径问题的算法中,Bellman-Ford算法是唯一一个能够处理权值可以是负数的图的算法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值