国防科技大学计算机基础慕课课堂学习笔记

1.信息论

香农作为信息论的这个创始人,给出来了这个信息熵的计算方法,为我们现在的这个生活的很多领域奠定了基础,我第一次听说这个信息熵是在这个数学建模里面的理论学习中有关于这个:决策树的模型,在那个问题里面,使用到了这个信息论的相关内容(感兴趣的可以在我的主页找到这个文章,那个文章里面的女神相亲的例子还是非常容易理解的);

计算的本质:从一个0/1字符串到另外一个0/1字符串;

2.一则小故事

在我们的这个计算机里面,存在这个精度的问题,不同的位数的这个机器的精度是存在着差别的,而且有一些小数是无法进行精准的表示的,如果我们的这个计算机的位数很低,这个时候就会出现类似的这个精度确实的问题;

下面的这个就是来自于海湾战争里面的真实的案例,确实让我真正的体会到了这个的威力,就是美军的这个爱国者导弹负责就是这个拦截任务,但是这个计数器是0.1s作为我们的时间的间隔的,而且这个计算器当时是24位,这个注定是无法使用二进制进行精准的表示的;

通过计算我们可以知道,我们的这个爱国者导弹没经过1小时的时间这个误差大概会出现6.8s的样子,我们知道这个导弹进行拦截的时候时间非常重要,可能就是这个微小的误差,带来的结果就是积少成多,最后出现了下面的这个类似的严重的问题;

想要解决这个问题,我们可以重启系统,就是控制这个误差,不要让这个误差无线的放大,在一定的这个范围里面我们还是可以接受的,其次就是提高这个计算机的精度,从24位到下面的这个64位,这个表示我们的0.1的效果肯定是更加精确的,因此这个也是进一步减小误差的措施,其次就是修改计算机的内容程序,达到类似的目的;

3.补码的运算

下面的这个演示的就是我们的补码的运算,可以看到这个补码里面的第一位表示的就是我们的符号位,在这个补码里面我们的符号位是可以直接参与运算的,而且这个得到的结果是完全没有任何的问题的;

其实这个现象的背后是有很严谨的数学理论作为基础的,也就是我们的同余理论,具体的原理大家可以下去自行学习,反正你只需要知道这个补码的符号位在进行这个运行的时候是可以直接参与到我们的运算里面去的,并且不影响我们的这个运算的结果的准确性;

4.溢出带来的问题

正数+正数,得到的结果的符号位是1,也就是负数,这个就是典型的正溢出的情况:

下面的这个图片的右边进行列式子的时候时进行了这个原码反码补码的转换的,你可以使用基础的方法,也可以使用我们在之前的一个文章里面的快速转换的方法(迅速的找到源码里面的最后一个1,后面的不变,前面的取反);

下面的这个是我们的另外的一个溢出的情况的分析:

下面的这个溢出的情况真实的后果:这个主要的背景就是图示的这个五星的火箭的代码有一个部分是直接从这个四星的火箭上面cv过来的(没想到吧,即使是造火箭这样的事情,我们的工程师好像也不是那么的细心),但是这个代码在我们的四星火箭上面是没有任何的问题的(16位数完全足够进行表示),但是在这个五星火箭上面就真的不一定了,就是因为这个原因出现了溢出的情况,导致了这个火箭的爆炸

5.关于小数点引发的问题---规格化

关于这个规格化的问题,我觉得那个老师讲的真的非常的不错,介绍了这个规格化为什么会出现,我们如何使用这个模式对于解码和尾数进行相关的浮点数的数据的表示的过程;

其实这个是在讲述小数点需要不需要进行表示的时候介绍的,实际上这个小数点和我们的基数2都是默认的,在这个计算机里面都是隐含的,不需要我们认为进行手动的表示;

这个小数点和我们的基数2都是默认的,在这个计算机里面都是隐含的,不需要我们认为进行手动的表示;

相关推荐
再睡一夏就好21 小时前
【C++闯关笔记】详解多态
c语言·c++·笔记·学习·语法·1024程序员节
与己斗其乐无穷21 小时前
C++学习记录(22)异常
学习·1024程序员节
断剑zou天涯1 天前
【算法笔记】暴力递归尝试
java·笔记·算法
摇滚侠1 天前
全面掌握PostgreSQL关系型数据库,备份和恢复,笔记46和笔记47
java·数据库·笔记·postgresql·1024程序员节
喜欢吃燃面1 天前
数据结构算法题:list
开发语言·c++·学习·算法·1024程序员节
。TAT。1 天前
C++ - 多态
开发语言·c++·学习·1024程序员节
武当豆豆1 天前
C++编程学习(第42天)
开发语言·c++·学习
凉虾皮1 天前
2024包河初中组
学习·算法·1024程序员节
kkkkk0211061 天前
黑马微服务保险(一)
笔记·微服务·架构
hour_go1 天前
【知识图谱】图神经网络(GNN)核心概念详解:从消息传递到实战应用
笔记·深度学习·神经网络·1024程序员节