标签:tar 进制 http 图论 就是 int ++ tail 整型
我们知道计算机都是按照二进制存储的。在日常练习过程中,我们都会遇到INF无穷大量的问题,那么我们该怎么定义这么一个数字,下面便有一些说明:
所以在通常的场合下,const int INF = 0x3f3f3f3f;真的是一个非常棒的选择。
可以算一下 0x7FFFFFFF 是多少
每个十六进制数4bit,因此8位16进制是4个字节,刚好是一个int整型
F的二进制码为 1111
7的二进制码为 0111
这样一来,整个整数 0x7FFFFFFF 的二进制表示就是除了首位是 0,其余都是1
就是说,这是最大的整型数 int(因为第一位是符号位,0 表示他是正数)
用 INT_MAX 常量可以替代这个值。
C中常量INT_MAX和INT_MIN分别表示最大、最小整数,定义在头文件limits.h中。
1. INT_MAX,INT_MIN数值大小
因为int占4字节32位,根据二进制编码的规则,INT_MAX = 2^31-1,INT_MIN= -2^31.C/C++中,所有超过该限值的数,都会出现溢出,出现warning,但是并不会出现error。如果想表示的整数超过了该限值,可以使用长整型long long 占8字节64位。
2. 关于INT_MAX INT_MIN的运算
由于二进制编码按原码、补码和反码的规则进行运算,所有程序中对INT_MAX和INT_MIN的运算应当格外注意,在出现溢出的时候,不遵循数学规则。
INT_MAX + 1 = INT_MIN
INT_MIN - 1 = INT_MAX
abs(INT_MIN) = INT_MIN
比较有趣的是,INT_MAX + 1 < INT_MAX, INT_MIN - 1 > INT_MIN, abs(INT_MIN) < 0.
因为要使字符串的哈希值各不相同,所以要取一些奇奇怪怪的质数进行MOD,比如19260817(逃)
常见的质数 1e9+7,1e9+9,233,19260817,196608131e9+7,1e9+9,233,19260817,19660813 等
为了防止相同,经常会使用双膜数,即取两次模,判断是否相等,就能使运算更加精确。
标签:tar 进制 http 图论 就是 int ++ tail 整型
原文地址:https://www.cnblogs.com/tflsnoi/p/10356495.html