• 凡事预则立,不预则废


    在写下这句话的时候,自己一直以为应该是这个“欲”。后来自己百度了一下,发现我错了,自己一直认为正确的却是错误的,看来最近真的好好反思一下自己的行为下面是对这句话的解释:

    预:预先,指事先作好计划或准备;立:成就;废:败坏。

    不论做什么事,事先有准备,就能得到成功,不然就会失败。

    为什么要用这句话作为文章的标题呢?说来很奇怪,我自己也没有想清楚,反正最近自己过的浑浑噩噩的,感觉自己没有一点长进,所以,突然之间,就想到了这句话,算是对自己的一个鞭策,好好的去践行这句话。

    今天算来是来到北京近一个月的时间了,感觉自己还是和以前的状态一个样,没有大多的改变。反正现在就是认为自己的时间浪费不起,倒是真正没有好好的去珍惜,人就是这样,有句话怎么说的:书非借不读。有些东西是自己的了,就不会好好的去珍惜,但是如果眼睁睁的看着失去的时候,却后悔莫及。好啦,废话不多说,以后有机会再扯这些技术之外的问题,今天就好好的总结一下最近学的一些东西吧。

    印象最深的是浮点数在内存中的存放(这个记忆很深):

    今天是3月10号,就拿3.10来说吧。3.10在计算机的内存中是什么样子的呢?就是那个二进制0101什么的。我们知道,float数据类型是占4字节的(其他编译器可能不一样,姑且先不去谈论这个问题),也就是4*8=32位,二进制代码就是:

    01000000 01000110 01100110 01100110(0x404666)

    哈哈,看到是不是晕了,听我慢慢解释:

    第1位:表示浮点数的正负,1为负数,0为正数,我们输入的是3.10,所以就是0

    第2~9位:转换为十进制,再减去127就是指数的大小,至于为什么要减去127,因为这是老鳖的屁股(IEEE的龟腚)。首先,我们要知道,浮点数在由2部分组成,底数(大于0小于1)和指数。也就是0.310*e^1,然后128-127=1

    第10~32位:底数部分。只有23位,其实这里省略了整数部分1,完整的为1.1000110 0110011001100110,这里指数E=1,也就变成了11.0001100110011001100110,换算为10进制,整数部分我一眼就看出来是3,但是小数部分怎么算呢?(基础不好为嘛还要搞这么底层,自找苦吃)

    小数部分的换算:1*(2^-4)+1*(2^-5)+1*(2^-8)+1*(2^-9)……,为啥是这样子呢?0.0625+0.03125+… …+……=0.1(大约)

    到这里,我相信你会想到一句话,浮点型数据在运算中会有精度的损失,正是因为它在内存中这样独特的存储方式,所以才会导致这个问题。

    那么有什么办法躲避这个问题呢?呵呵,这就不是本文的探讨范围了,网上有具体的算法,大家可以看看,反正我是没有细究下去,毕竟现在还用不着。

    上边说的是怎么把一个二进制转换为一个十进制,那我现在比如给个-17.625,二进制怎么手动计算出来呢?

    首先,这是个负数,第1位是1

    其次,写成指数形式是0.17625*e^2,指数是2,2+127=129,二进制位1000 0001

    最后,底数部分。17.625的二进制为:

    整数部分:10001

    小数部分:0.625*2=1.250余1

                   0.250*2=0.5    余0

                   0.5*2=1           余0

    合并起来为:10001.100

    不行,思路不清晰,第一次写,明天整理下,sorry

  • 相关阅读:
    Leetcode刷题记录--39. 组合总和
    Leetcode刷题记录--31. 下一个排列
    Leetcode刷题记录--22. 括号生成(回溯)
    Leetcode刷题记录--17. 电话号码的字母组合(回溯)
    分布式学习之--6.824MITLab1记录
    总结javascript处理异步的方法
    引用、浅拷贝及深拷贝 到 Map、Set(含对象assign、freeze方法、WeakMap、WeakSet及数组map、reduce等等方法)
    Vue之富文本tinymce爬坑录
    iOS 13 正式发布,来看看有哪些 API 变动
    Vuex,从入门到...
  • 原文地址:https://www.cnblogs.com/yuer-living/p/3592518.html
Copyright © 2020-2023  润新知