我们知道计算机都是按照二进制存储的。在日常练习过程中,我们都会遇到INF无穷大量的问题,那么我们该怎么定义这么一个数字,下面便有一些说明:

  • 0x3f3f3f3f的十进制是1061109567,也就是10^ 9级别的(和0x7fffffff一个数量级),而一般场合下的数据都是小于10^9的,所以它可以作为无穷大使用而不致出现数据大于无穷大的情形。

  • 另一方面,由于一般的数据都不会大于10^9,所以当我们把无穷大加上一个数据时,它并不会溢出(这就满足了“无穷大加一个有穷的数依然是无穷大”),事实上0x3f3f3f3f+0x3f3f3f3f=2122219134,这非常大但却没有超过32-bit int的表示范围,所以0x3f3f3f3f还满足了我们“无穷大加无穷大还是无穷大”的需求。

  • 最后,0x3f3f3f3f还能给我们带来一个意想不到的额外好处:如果我们想要将某个数组清零,我们通常会使用memset(a,0,sizeof(a))这样的代码来实现(方便而高效),但是当我们想将某个数组全部赋值为无穷大时(例如解决图论问题时邻接矩阵的初始化),就不能使用memset函数而得自己写循环了(写这些不重要的代码真的很痛苦),我们知道这是因为memset是按字节操作的,它能够对数组清零是因为0的每个字节都是0,现在好了,如果我们将无穷大设为0x3f3f3f3f,那么奇迹就发生了,0x3f3f3f3f的每个字节都是0x3f!所以要把一段内存全部置为无穷大,我们只需要memset(a,0x3f,sizeof(a))。

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

INF=0x3f3f3f3f背后的知识相关推荐

  1. QAQ……#define INF 0x3f3f3f3f 原来是定义成无穷大

    经常在参观大佬的博客的时候看到这种写法,百思不得其解, "0x3f3f3f3f "是什么?/*虽然,似乎,好像刚刚看过进制转换--就当我选择性失忆吧*/ ------------- ...

  2. const int INF=0x3f3f3f3f;——ACM中的无穷大常量

    0x3f3f3f3f 0x开头的 是十六进制常数, 等于 十进制 1061109567 等于 二进制: 00111111 00111111 00111111 00111111 const int in ...

  3. INF=0x3f3f3f3f是 什么意思?

    经常求最短路的时候好多人都把inf 设为0x3f3f3f3f ,今天让我们来看看这个奇妙的无穷大

  4. 12345市民服务热线背后:知识图谱与智慧政务的新火花

    生活中遇到问题怎么办?现如今,12345热线已经成为市民遇到问题的"第一选择",也是企业和群众反映问题建议.推动解决政务服务问题的重要渠道. 为此,国务院办公厅于1月6日印发< ...

  5. 【C语言初学必看】猜数字游戏背后的知识

    目录 前言: 1.先看主体部分(大体逻辑的部分) a.为什么用do...while循环: b.switch语句: c.关于scanf ( ) 中的 %d %s 和 printf ( ) 的关系 d.m ...

  6. 【Linux杂篇】经常登录Linux,用户密码背后的知识了解一下

    一,用户密码存放在哪里? 说到这个问题,绝大部分的同学肯定都知道/etc/passwd这个文件,不错,这个文件里存储的就是用户名,密码等信息. 每一行都是一个account,每一行有7个信息,分别用 ...

  7. BLAST背后的知识(一点原理)

    文章目录 一.替换计分矩阵: 1.DNA序列比对的替换计分矩阵 2.蛋白质序列比对的替换计分矩阵 二.比对算法 三.BLAST的一些参数 一.替换计分矩阵: 1.DNA序列比对的替换计分矩阵 1.等价 ...

  8. #define inf 0x3f3f3f3f

  9. 多系统引导背后的知识:磁盘、分区、文件系统、GPT、UEFI

    [Windows 7 + Windows 8 (PE) + Windows 10 + deepin-Linux + MacOS X] <电脑修的好,备胎当到老> 前言:随着软硬件技术的发展 ...

最新文章

  1. linux驱动:音频驱动(四)ASoc之machine设备
  2. Compressive sensing
  3. jenkins插件findbugs+pmd+checkstyle结合sonar与maven(java环境代码质量和代码规范管理)...
  4. 【Linux入门连载三】Linux常用的基本命令
  5. VS一直停留在“正在还原nuget程序包”
  6. C++类的构造函数和析构函数
  7. 画风清奇!看看大佬怎么玩Python
  8. OOD面向对象设计浅谈
  9. html的带分页的表格写法,Html表格分页
  10. linux运算_linux中的计算【转】
  11. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第4节 方法引用_1_方法引用基本介绍...
  12. 半导体物理学习整理(一)
  13. 使用phpQuery轻松采集网页内容
  14. Java—企业微信网页版登陆认证详解
  15. excel中的相对引用、绝对引用和混合引用
  16. 【Zoomit】的安装及使用方法
  17. MySql无法连接本地地址localhost
  18. 使用虚拟机备份软件恢复OpenStack虚拟机
  19. Mac下Smb的使用
  20. 广州移动华为认证培训之行

热门文章

  1. UIControl UIImage
  2. android ANR产生原因和解决办法
  3. 大三,一点回忆,一点难忘
  4. 如何使用Nginx服务开启HTTP2
  5. 学成在线案例——黑马程序员pink老师\思路讲解\完整源代码
  6. 物联网专题--基于APP Inventor的BLE蓝牙4.0数据通信
  7. android屏幕录制鸿洋,Android之自定义View笔记(鸿洋)
  8. 利用维纳滤波编码实现给定的运动模糊图像恢复
  9. java 程序打包成jar_Java程序打包成jar包
  10. @kafkalistener中id的作用_无意中测试了下MySQL里面的join操作,发现还是存在理解偏差...