MITS6004第一课笔记

又要开始学习新课程了,咱就是说s081才看了第一节,这边就开始看s6004了,主要还是因为是基础吧,这门课对标的是国内的数字电路和计算机组成原理,从2019年开始MIT把S6.004升级为基于risc-v架构的,所以我就找了2019年的视频看。

网上的公开课版本是2017年的版本,包括课程大纲及实验等等,都是有的但是都是2017的版本。

所以就目前看来我还没有找到2019配套的实验及课件,等过两天我可能回去找到了就挂出来(大概是没有)。因为这门课的主页已经改掉了,换了一个新的代码叫191,191之前又是深度学习的代码,不知道在搞啥,不关我事。

关于课程B站上有,搬运了的质量也不是很好,然后都是从油管搬运的,油管2019的视频并没有公开,我搜到了一个播放列表,里面有22节视频。

油管链接

咱就是说,先将就着看吧,把自动翻译打开还是能大概看懂他在讲什么的,词汇量不够,看英文字幕好多不认识的单词就很难受。

Binary Representation

二进制表示大概是这样的,讲了第一个是二进制转换为十进制,咱就是说这个我都忘了,存个图记一下。

二进制转换为十进制

可以看到计算公式和计算方法,每一位的0和1乘以2的第几位次方。

十进制转换为二进制

一个简单的办法把小数字转换为二进制就是,减去2的最大幂。

因为从二进制转换为十进制时我们发现,十进制是由有限个2的n次幂组成的。

所以11减去2的最大次幂8余3,得到2的三次方

3减去2的一次幂余1,1减去2的零次幂得到0

由此我们总结减去的数分别为,2的三次一次零次,由此得到1011。

二进制的表示范围

最小的数0

最大的数2的n次幂减一

二进制转化十六进制

这里有个表,他说这个表后来会记住。

然后就是用0b来表示二进制(binary),0x来表示十六进制(hex)

二进制加减法

如上图所示,可以自己算算,最后用一个二进制3减去二进制5的由头提问负数二进制怎么表示。

二进制溢出

提到了如上图所示的借位问题,然后说起了计算机的位数运算,8位,16位,32位,包括现在的64位。提出了一个思想,直接舍弃溢出的数字。

提到了模块化计算,就是上面写的8比特。

如上图所示,一个常用的方法就是舍去多余的比特。然后上面的示意图是8比特的加减运算示意。

这一段解释了为什么要使用模块化计算,提出了一个尝试,用一个bit来表示正负。1表示负数,0表示负数。但是这样带来的问题就是,将会有两种表示0的方法,正负零。另一个问题是如果引入了正负数,那么数字电路的加减法将会变得复杂化。

二进制补码编码

这边提出了如何在使用模块化计算的情况下,表示负数,然后提出了二进制补码。

如果按照这个方法来实现,那我们就得出了一个新的公式,如上图所示。

负数在最高位上是1。

这边证明了为什么负数是每一位取反最后加一。

黑板上板书了x是 01下非x是10。那么如果x是0的话,1-0=1,如果x是1的话,1-1=0。

把减法变成了加法来计算A-B。结果就是同一个圆圈可以加也可以减。

二进制补码计算

最后演示了一下二进制计算,PPT上写的很清晰。

总结


MITS6004第一课笔记
https://steammilk.com/2023/02/06/2023-all/6-s004-lec1/
作者
蒸奶泡
发布于
2023年2月6日
更新于
2025年1月8日
许可协议