0x3f3f3f3f_《羊卓的杨的算法笔记》_Quentin

为什么要用0x3f3f3f3f?

    我们有时需要取一个无穷大,但是我们该取什么值呢?
    首先可以取int的最大值0x7fffffff,但是这个数只能用来进行大小比较。因为如果我们想正常进行运算,使用0x7fffffff无疑会带来越界,那这个时候就要考虑换一个数。不知是何方神圣想到了一个巧数0x3f3f3f3f,这个数好在哪呢?
    首先,0x3f3f3f3f和0x7fffffff同为10^9级别的,一般的数据到不了这个数量级,所以可以放心的作为最大值使用。
    其次,我们我们之所以不用0x7fffffff就是为了让无穷大的数可以参与运算,而0x3f3f3f3f恰好符合这个条件,0x3f3f3f3f在十进制是1061109567即使是相加了也超不过int的2147483647。
    另外,通过看一些前辈的文章又意识到将0x7fffffff换成0x3f3f3f3f的一个具体应用,那就是在最短路径算法中的应用。在最短路径算法中的送出操作中完美避免数据爆掉的危险。
    最后,它还有一个好处。在用memset函数对数组赋值时是一个字节一个字节的操作,如果用了0x7fffffff根本就不可能一个字节一个字节的赋值,为啥?因为每个字节不一样!但是0x3f3f3f3f就不一样了,它可以利用 memset(a, 0x3f, sizeof(a));进行赋值。
    综上所述,大伙把这个0x3f3f3f3f数用起来~
    
    
    
    
    
    
《羊卓的杨的算法笔记》:🔗链接

哔哩哔哩/bilibili:🔗羊卓的杨

羊卓的杨公众号:
在这里插入图片描述

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页