对新手友好,简单易于理解
前言:
C++初学者遇到1e9时,可能会很好奇,这个表示什么意思?有什么用?遇到的一些问题为什么要这么处理?以下是个人的一些理解。

1.什么是1e9
通常来说这是计算机中一种科学计数法的表示形式:
1e9 = 110^9 = 1000000000;
例如:9e8 = 9
10^8 = 900000000;
e表示10,e后面的数字表示次方,e的多少次方。

2.C++中的1e9

int num1 = 1e9;
int num1 = 1e10;
输出的结果为:
num1 = 1 000 000 000;
num2 = 1 410 065 408;

那么问题来了,为什么num2 不等于 10000000000 ?
C/C++中int类型是32位的,范围是-2147483648 到 2147483647。
int占用4个字节,也就是32位,除了第一位代表符号,剩下的31位可用。
十进制的 1e10时,转换为二进制:
10 0101 0100 0000 1011 1110 0100 0000 0000前两位出现数据溢出问题。
而0101 0100 0000 1011 1110 0100 0000 0000 转换成十进制就是 1 410 065 408

3.C++中某个变量初始化赋值为1e9

int count = 1e9;
res = min(res, count);

实际中遇到的一些问题,或者解决一些算法问题时,会遇到给某个变量初始化并赋值为1e9。接着后面会出现一些代码计算最小值。
这时,1e9的作用是给变量赋一个初始极大值,原因在于后面的代码中需要取此变量和其他变量的最小值。初始化为一个最大值,亦即初始化为无穷,便于后面极小值的比较和获取,属于初始化的目的。
有时我们需要比较大小,或者在matlab等其语言中为取无穷,我们只需取一个很大的值即可。C++中取1e9,10的九次方就是一种方法,代表一个很大的值。

4.C++中表示正无穷与负无穷
正无穷:0x3f3f3f3f
负无穷:0xc0c0c0c0

    int a=0x3f3f3f3f;int b=0xc0c0c0c0;输出:a=1061109567b=-1061109568

5.mod 1e9+7
在一些算法题目中,会遇到这样的情况:
由于结果可能较大,将结果mod 1e9+7,即mod 1000000007 。
或者( a * b ) % c = [ ( a % c ) * ( b % c ) ] % c 而这个c最常见的还是1e9+7。
有时候结果比较大的时候,会对结果进行mod 1e9+7操作。为什么呢?
第一:
1e9+7是一个很大的数,int32位的最大值为2147483647,所以对于int32位来说1000000007足够大。int64位的最大值为2^63-1,对于1000000007来说它的平方不会在int64中溢出所以在大数相乘的时候,因为(a∗b)%c=((a%c)∗(b%c))%c,所以相乘时两边都对1000000007取模,再保存在int64里面不会溢出 。有点于归一化的意思。
当一个问题只对答案的正确性有要求,而不在乎答案的数值,可能会需要将取值很大的数通过求余变小
第二:
其次,1e9+7是一个质数,在模素数p的情况下a*n(a非p的倍数)的循环节长为p,这是减少冲突的一个原因。另一方面模素数p的环是无零因子环,也就是说两个非p倍数的数相乘再模p不会是零(如果是0的话,在多个数连乘的情况下会大大增加冲突概率)。比如说如果所有的结果都是偶数…你模6就只可能出现0, 2, 4这三种情况…但模5还是可以出现2, 4, 1, 3这四(4=5-1)种情况的… hash表如果是用取模的方法也要模一个大质数来减少冲突,出题人也会这样来 希望减少你“蒙对“的概率。

如果这篇文章对你有用的话,请点击下方的一键三连,感谢感谢!

C++中1e9(初始化、无穷大)解析相关推荐

  1. python类初始化详解_python类中super() 的使用解析

    描述 super() 函数是用于调用父类(超类)的一个方法. super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO).重复 ...

  2. Java中的static关键字解析 转载

    原文链接:http://www.cnblogs.com/dolphin0520/p/3799052.html Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到 ...

  3. [转] Java中的static关键字解析

    Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键 ...

  4. 【Java学习笔记之十五】Java中的static关键字解析

    Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键 ...

  5. php在html里面的位置,关于script在html中的摆放位置解析

    以前一直觉得script在html中的任何位置都可以,今天做一个需求的时候才更正了自己的错误思想啊--script的位置也不是随便放的.本文主要谈论关于script在html中的摆放位置.小编觉得挺不 ...

  6. 大括号之谜:C++的列表初始化语法解析

    转载: https://segmentfault.com/a/1190000039362151 摘要:有朋友在使用std::array时发现一个奇怪的问题:当元素类型是复合类型时,编译通不过. 有朋友 ...

  7. C语言指定初始化器解析及其应用

    由于笔者能力有限,文中如果出现错误的地方,欢迎大家给我指出来,我将不胜感激,谢谢- #指定初始化器的概念 C90 标准要求初始化程序中的元素以固定的顺序出现,与要初始化的数组或结构体中的元素顺序相同. ...

  8. Java中的泛型全解析(二)

    Java中的泛型全解析(一) 泛型中的约束和局限性 现在我们有泛型类 不能用基本类型实例化类型参数 运行时类型查询只适用于原始类型 泛型类的静态上下文中类型变量失效 不能在静态域或方法中引用类型变量. ...

  9. Ol3中Map事件全解析

    Ol3中Map事件全解析 本文将粗略对ol3 基本地图事件进行研究. 地图点击事件 singleclick:地图单击事件. dblclick:地图双击事件. click:地图点击事件. 测试 map. ...

  10. Android开发中的WMS详细解析

    /   今日科技快讯   / 近日,小冰公司宣布对旗下人工智能数字员工产品线启动年度升级.本次升级加强的技术包括大模型对话引擎.3D神经网络渲染.超级自然语音及AIGC人工智能内容生成.小冰公司计划将 ...

最新文章

  1. Ubuntu 误改/etc/sudoers 文件权限
  2. CentOS 6.4配置TL-WN823N外置无线网卡
  3. 模型 标签数据 神经网络_大型神经网络和小数据的模型选择
  4. vue :key的说明 看到这文章,解决你的疑问
  5. 百度要召集 600 名深度学习开发者搞事情? 首届深度学习开发者峰会等你来
  6. windows中的ntsd工具使用
  7. 使用matlab设计iir滤波器并自行编写代码实现iir滤波器(可对应于C语言应用在嵌入式系统中)
  8. 点云库PCL学习笔记 -- 输入输出IO -- 6.PCL中记录时间长度TicToc 类和系统Time 类
  9. 修改macOS中鼠标滚轮方向
  10. 汉字应用水平测试软件,汉字应用水平测试(HZC)试点将在11个省市进行
  11. 最简洁的Git的基本操作
  12. 备案过的域名解析到别的服务器,教你如何解析未备案的域名到国内服务器
  13. Nginx Sticky的使用及踩过的坑(nginx-sticky-module)
  14. 如何查询windows的版本号?
  15. 判断字符串是否存在于文件中
  16. 实现 OT 算法的开源项目
  17. Nerdctl 原生支持 Nydus 加速镜像
  18. 产业安全专家谈 | 航空产业驶入数字化快车道,如何升级智慧航空新体验?
  19. C++虚函数virtual
  20. 7 21 给张孝祥老师的第一封信

热门文章

  1. Firefox火狐浏览器报错:无法连接到 reCAPTCHA 服务
  2. pdf怎么转换成html.4,PDF怎么转换成HTML?
  3. 毫米波雷达人体存在感应,精准感知人体存在,感知既互动
  4. keygen文件被小红伞自动删除的解决办法
  5. Thinkpad E420/E520/E420S/E220S 刷BIOS SLC2.1 激活OEM win7
  6. 发送 POST 请求出现异常!java.io.IOException: Server returned HTTP response code: 400 for URL:
  7. 英语学习——此“规则”,非彼“规则”
  8. LightWave v9 Lighting
  9. denied: requested access to the resource is denied
  10. linux 数据库数据同步,linux下mysql主从复制,实现数据库同步