关于无穷大0x3f3f3f的一些知识

  1. 0x3f3f3f3f的十进制是1061109567,也就是10^9级别的(和0x7fffffff一个数量级),而一般场合下的数据都是小于10^9的,所以它可以作为无穷大使用而不致出现数据大于无穷大的情形。
  2. 另一方面,由于一般的数据都不会大于10^9,所以当我们把无穷大加上一个数据时,它并不会溢出(这就满足了“无穷大加一个有穷的数依然是无穷大”),事实上0x3f3f3f3f+0x3f3f3f3f=2122219134,这非常大但却没有超过32-bit int的表示范围,所以0x3f3f3f3f还满足了我们“无穷大加无穷大还是无穷大”的需求。
  3. 最后,0x3f3f3f3f还能给我们带来一个意想不到的额外好处:如果我们想要将某个数组清零,我们通常会使用memset(a,0,sizeof(a))这样的代码来实现(方便而高效),但是当我们想将某个数组全部赋值为无穷大时(例如解决图论问题时邻接矩阵的初始化),就不能使用memset函数而得自己写循环了(写这些不重要的代码真的很痛苦),我们知道这是因为memset是按字节操作的,它能够对数组清零是因为0的每个字节都是0,现在好了,如果我们将无穷大设为0x3f3f3f3f,那么奇迹就发生了,0x3f3f3f3f的每个字节都是0x3f!所以要把一段内存全部置为无穷大,我们只需要memset(a,0x3f,sizeof(a))。

所以在通常的场合下,const int INF = 0x3f3f3f3f;真的是一个非常棒的选择。

时间: 2024-12-15 01:43:51

关于无穷大0x3f3f3f的一些知识的相关文章

javascript必须知道的知识要点(二)

该文章不详细叙述各知识要点的具体内容,仅把要点列出来,供大家学习的时候参照,或者检测自己是否熟练掌握了javascript,清楚各个部分的内容. 内建对象可划分为数据封装类对象.工具类对象.错误类对象,如下. 数据封装类对象: Number对象 String对象 Boolean对象 Array对象 Object Function 工具类对象: Math对象 Date对象 RegExp对象 错误类对象: Error对象  Number对象 JavaScript 只有一种数字类型.Number,包括

(1)JavaScript基础知识

Javascript基础知识 1.如何使用JavaScript (1).通过<script></script>中直接编写 (2).通过<script src='目标文档的URL'></script>链接外部的Js文件 ① <script  src="URL" type="text/javascript" charset="utf-8"></script> (3).作为某个元素

读《从一到无穷大》

最近诺贝尔物理学奖颁发给了研究中微子的科学家,但是你知道什么是中微子吗?来读一读这本书吧.不光是中微子,本书将带你在科学的海洋中徜徉,不用复杂的定理和公式也能体会科学的美妙.本书分为以下四章 1.数 想知道怎么比较几个无穷大的数的大小吗?想知道虚数是怎么在藏宝图被损坏的情况下帮助探险家找到宝藏的吗?来看看这一章吧. 2.四维空间 想知道四维空间?相对论?重力的本质?宇宙的大小?超光速能否回到过去?这一章给你答案. 3.微观世界 想把铁变成金子?(牛顿曾痴迷于此)想了解核武器为什么有这么大的威力?

读书笔记:《从一到无穷大》

读书笔记:<从一到无穷大> 这本书是看<数学之美>时发现的,原来是80年代的一本老书,但书中涉及的范围相当之 广,从数字到无穷大,再到四维空间,再到相对论,再到微观世界,再到宏观世界,有些内容用一些简单的办法让人能够理解,具有高中知识的人也可以理解,而用 复杂的复变函数或范函分析之类的术语,则会把大多数人吓跑. 看了豆瓣的评论,原来这本书并不是伽莫夫一个人写成的,里面也用了许多别人的成果,也就不去考证了. http://book.douban.com/people/57526326

计算机基础知识2

程序运行的模式: Linux系统将自身划分为两部分,一部分为核心软件,即是kernel,也称作内核空间,另一部分为普通应用程序,这部分称为用户空间. 用户空间中的代码运行在较低的特权级别上,只能看到允许它们使用的部分系统资源,并且不能使用某些特定的系统功能,也不能直接访问内核空间和硬件设备,以及其它一些具体的使用限制. 用户空间:user space,us    内核空间:system  space POS :Portable Operating System   可移植操作系统规范 POSIX

Linux基础知识2

程序运行的模式: Linux系统将自身划分为两部分,一部分为核心软件,即是kernel,也称作内核空间,另一部分为普通应用程序,这部分称为用户空间. 用户空间中的代码运行在较低的特权级别上,只能看到允许它们使用的部分系统资源,并且不能使用某些特定的系统功能,也不能直接访问内核空间和硬件设备,以及其它一些具体的使用限制. 用户空间:user space,us    内核空间:system  space POS :Portable Operating System   可移植操作系统规范 POSIX

动画基础知识汇总

转载自http://www.cnblogs.com/kenshincui/p/3972100.html --iOS核心动画 概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建基础动画.关键帧动画.动画组.转场动画,如何通过UIView的装饰方法对这些动画操作进行简化等.在今天的文章里您可以看到动画操作在iOS中是如何简单和高效,很多原来想做但是苦于没有思路的动画在iO

Deep learning:一(基础知识_1)

前言: 最近打算稍微系统的学习下deep learing的一些理论知识,打算采用Andrew Ng的网页教程UFLDL Tutorial,据说这个教程写得浅显易懂,也不太长.不过在这这之前还是复习下machine learning的基础知识,见网页:http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=DeepLearning.内容其实很短,每小节就那么几分钟,且讲得非常棒. 教程中的一些术语: Model repr

转载 Deep learning:一(基础知识_1)

前言: 最近打算稍微系统的学习下deep learing的一些理论知识,打算采用Andrew Ng的网页教程UFLDL Tutorial,据说这个教程写得浅显易懂,也不太长.不过在这这之前还是复习下machine learning的基础知识,见网页:http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=DeepLearning.内容其实很短,每小节就那么几分钟,且讲得非常棒. 教程中的一些术语: Model repr