关于无穷大的设定

32位整数中表示无穷大的技巧
本文探讨了在32位整数中如何更有效地表示无穷大这一概念,尤其是在算法和程序设计中。文章对比了常用的0x7fffffff和更为优化的选择0x3f3f3f3f,后者不仅避免了溢出问题,还能通过简单的内存设置快速初始化。

一般来说,在不明确的情况下,都取0x7fffffff作为无穷大,因为这的确是32-bit int的最大值。但在某些情况下,这可能不是一个很好的选择。

很多时候,我们并不是单纯拿无穷大来比大小,而是会进行一定运算后再比较,例如最短路径算法中常用到的松弛操作,两个无穷大相加就会变成负数(溢出了)。

这时候,我们可以选用一些更为精巧的数字来代替,也就是0x3f3f3f3f。

0x3f3f3f3f的10进制表示为1061109567,这个数已达到10^9,足以表示无穷大,而且2*0x3f3f3f3f=2122219134,满足无穷大+无穷大仍为无穷大,而不会变成负数。

还有一点是,0x3f3f3f3f的每个字节都是0x3f,所以可以方便初始化,比如memset(a,0x3f,sizeof(a)),而0x7fffffff就需要循环操作了。


我前面的程序好像少打了两个f。。

转载于:https://www.cnblogs.com/S031602240/p/6354112.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值