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上写的很清晰。