INF=0x3f3f3f3f背后的知识
我们知道计算机都是按照二进制存储的。在日常练习过程中,我们都会遇到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背后的知识相关推荐
- QAQ……#define INF 0x3f3f3f3f 原来是定义成无穷大
经常在参观大佬的博客的时候看到这种写法,百思不得其解, "0x3f3f3f3f "是什么?/*虽然,似乎,好像刚刚看过进制转换--就当我选择性失忆吧*/ ------------- ...
- const int INF=0x3f3f3f3f;——ACM中的无穷大常量
0x3f3f3f3f 0x开头的 是十六进制常数, 等于 十进制 1061109567 等于 二进制: 00111111 00111111 00111111 00111111 const int in ...
- INF=0x3f3f3f3f是 什么意思?
经常求最短路的时候好多人都把inf 设为0x3f3f3f3f ,今天让我们来看看这个奇妙的无穷大
- 12345市民服务热线背后:知识图谱与智慧政务的新火花
生活中遇到问题怎么办?现如今,12345热线已经成为市民遇到问题的"第一选择",也是企业和群众反映问题建议.推动解决政务服务问题的重要渠道. 为此,国务院办公厅于1月6日印发< ...
- 【C语言初学必看】猜数字游戏背后的知识
目录 前言: 1.先看主体部分(大体逻辑的部分) a.为什么用do...while循环: b.switch语句: c.关于scanf ( ) 中的 %d %s 和 printf ( ) 的关系 d.m ...
- 【Linux杂篇】经常登录Linux,用户密码背后的知识了解一下
一,用户密码存放在哪里? 说到这个问题,绝大部分的同学肯定都知道/etc/passwd这个文件,不错,这个文件里存储的就是用户名,密码等信息. 每一行都是一个account,每一行有7个信息,分别用 ...
- BLAST背后的知识(一点原理)
文章目录 一.替换计分矩阵: 1.DNA序列比对的替换计分矩阵 2.蛋白质序列比对的替换计分矩阵 二.比对算法 三.BLAST的一些参数 一.替换计分矩阵: 1.DNA序列比对的替换计分矩阵 1.等价 ...
- #define inf 0x3f3f3f3f
- 多系统引导背后的知识:磁盘、分区、文件系统、GPT、UEFI
[Windows 7 + Windows 8 (PE) + Windows 10 + deepin-Linux + MacOS X] <电脑修的好,备胎当到老> 前言:随着软硬件技术的发展 ...
最新文章
- linux驱动:音频驱动(四)ASoc之machine设备
- Compressive sensing
- jenkins插件findbugs+pmd+checkstyle结合sonar与maven(java环境代码质量和代码规范管理)...
- 【Linux入门连载三】Linux常用的基本命令
- VS一直停留在“正在还原nuget程序包”
- C++类的构造函数和析构函数
- 画风清奇!看看大佬怎么玩Python
- OOD面向对象设计浅谈
- html的带分页的表格写法,Html表格分页
- linux运算_linux中的计算【转】
- 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第4节 方法引用_1_方法引用基本介绍...
- 半导体物理学习整理(一)
- 使用phpQuery轻松采集网页内容
- Java—企业微信网页版登陆认证详解
- excel中的相对引用、绝对引用和混合引用
- 【Zoomit】的安装及使用方法
- MySql无法连接本地地址localhost
- 使用虚拟机备份软件恢复OpenStack虚拟机
- Mac下Smb的使用
- 广州移动华为认证培训之行
热门文章
- UIControl UIImage
- android ANR产生原因和解决办法
- 大三,一点回忆,一点难忘
- 如何使用Nginx服务开启HTTP2
- 学成在线案例——黑马程序员pink老师\思路讲解\完整源代码
- 物联网专题--基于APP Inventor的BLE蓝牙4.0数据通信
- android屏幕录制鸿洋,Android之自定义View笔记(鸿洋)
- 利用维纳滤波编码实现给定的运动模糊图像恢复
- java 程序打包成jar_Java程序打包成jar包
- @kafkalistener中id的作用_无意中测试了下MySQL里面的join操作,发现还是存在理解偏差...