美文网首页
程序员的数学基础课学习记录

程序员的数学基础课学习记录

作者: 许先森的许 | 来源:发表于2020-02-17 12:39 被阅读0次
1、怎么学

不要纠结数字计算,把握数学的工具属性,用数学的理论和抽象思想去解决问题,多思考不同问题是否可以用同一个思想(理论)去解决,同一个问题是否可以用不同的思想(理论)去解决(即不同的解题思路);任何工具方法的出现都是有原因的,学习它们一定要去找到背后的起因,再思考结果。
程序员的数据应用地图:


image.png

看看这张图,里面的内容无论是我已经熟悉还是不熟悉的、无论是我已经会用还是不会用的,我都将去探寻其背后的数学原理,并总结其他可以适用的地方。
在探索的过程中,可能一个原理的某些部分你是理解的,但是结合在一起就不理解了,没关系,多学几遍,当你真正用的时候就会有一种醍醐灌顶的感觉。

2、二进制

二进制的计算方式和其他进制的转换简单提一下:问:计算机的二进制数110101转为十进制是多少?
解:

抓住一个本质,那就是进制中的基数,几进制,基数就是几,本质知道了就简单了。

比如一个数字2871,本质的写法就是:2 * 1000+8 * 100+7 * 10+1,那么和基数有什么关系呢?把基数10带入进去,写法就会变成:2 * 10^3+8 * 10^2+7 * 10^1+1 * 10^0 = 2000+800+70+1=2871。
总结出:一个X进制的数字,转换为十进制,原理就是:各个位置上的数字乘上它的基数X的位数-1次幂。
比如一个二进制数字:110101,转换为十进制;其本质的基数是2。通过原理可以写出:1 * 2^5 + 1 * 2^4 + 0 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 32+16+0+4+0+1 = 53。
上面整个过程,从十进制开始到推导出原理,到用二进制验证,本身就是数学思维。那么依据第一条“怎么学”的原则,思考起因:为什么要用十进制去推导原理呢?
因为数字的发展从早期的石子计数到罗马数字到阿拉伯数字0-9,最终人类使用最广泛的就是阿拉伯数字0-9,也就是十进制,理解起来很快。
再思考结果:为什么要用二进制来验证呢?因为计算机的逻辑电路(硬件)部分本质都是开关,只有两种状态:开和关,对应就是0和1,也就是二进制。

二进制左移一位就是把数字翻倍,比如110101左移一位得到 1101010 ,106是52的两倍。
二进制右移一位是数字除以2的整数商,比如110101右移一位得到11010,26是52的一半。
二进制左移N位就是把数字乘以2的N次方,右移N位就是数字除以2的N次方的整数商。
3、求余运算本身是个哈希函数

整数是没有边界的,可以正负无穷大,但是余数是有边界的,余数的边界取决于“模”。
不同整数对于同一个模可能会得到同一个余数,我们可以认为这些整数就是同一类,所以用同余定里可以把无限大整数通过不同的模来规划到有限的“区域”中。

4、迭代

把上一次计算的结果放入到同一套计算规则中得到一个新的计算结果,用于下一次计算,从而无限接近想要的结果。举例:二分法查找。

相关文章

  • 程序员的数学基础课学习记录

    1、怎么学 不要纠结数字计算,把握数学的工具属性,用数学的理论和抽象思想去解决问题,多思考不同问题是否可以用同一个...

  • 程序员的数学笔记1--进制转换

    最近在学习极客时间的课程--程序员的数学基础课。 课程地址:https://time.geekbang.org/c...

  • 动态规划-如何推导出状态转移方程?

    今天学习了《程序员的数据基础课》中的动态规划小节。如果你觉得这个课程对你有启发,请通过 分享一个IT专属的数学课,...

  • 程序员的数学基础课

    计算机的源头 日常生活中,我们广泛采用十进制计数法。10是十进制计数法的基数,这也是十进制中“十”的由来。 十进制...

  • 程序员的数学基础课

    参考:程序员的数学基础课 第一章:二进制 1、什么是二进制计数法? 理解二进制之前,先理解十进制。十进制的基数是1...

  • 算法和数据结构 - 开篇

    材料 《数据结构与算法之美》 - 极客时间 《程序员的数学基础课》- 极客时间 《算法导论》 方式 多遍实现,达到...

  • 《程序员的数学基础课-程序员应该怎么学数学》学习笔记

    导读:程序员应该怎么学数学? 说一下自己之前是怎么学数学的,买了本讲数学历史的书籍,按数学里各种概念出现的时间顺序...

  • 【链接知识】

    [转自网络] 程序语言 基础课程 机器学习 Web 数学 思维 经济 心理 演讲写作 文化

  • 极客时间课程海报

    程序员的数学基础课 数据分析实战 面试现场 重学前端 go语言核心 左耳朵耗子 如何设计一个秒杀系统 推荐系统 l...

  • 本周疯狂输出20170217

    图书统计 总结: 英语学习效率低,每天固定背单词,缺乏使用场景,学习不能得到及时反馈。 数学正在进步,代数基础课程...

网友评论

      本文标题:程序员的数学基础课学习记录

      本文链接:https://www.haomeiwen.com/subject/dxdbfhtx.html