题 int32的最大值是多少?


我永远记不住这个数字。我需要一个记忆规则。


1269
2017-09-18 17:18


起源


无符号:2³²-1 = 4·1024³-1;签名:-2³¹.. +2³¹-1,因为符号位是最高位。只需学习2⁰= 1到2¹⁰= 1024并结合使用。 1024 = 1k,1024²= 1M,1024³= 1G - comonad
我通常记得每3位大约是一个十进制数字。这使我达到正确的数量级:32位是10位数。 - Barmar
@JoachimSauer如果你学会至少认识到这些类型的数字,它当然可以帮助调试。 - Dunaril
“如果磁盘已满,则删除所有mbytes将存档”(2个字母,1个字母,4个字母,7个字母,4个字母,8个字母,3个字母,6个字母,4个字母,7个字母) - UltraCommit
一个案例,当int32不够时: bbc.com/news/world-asia-30288542 - ingaham


答案:


这是2,147,483,647。记忆它的最简单方法是通过纹身。


4597
2017-09-18 17:20



我的助记符:2 ^ 10非常接近1000,所以2 ^(3 * 10)是1000 ^ 3或大约10亿。其中一个32位用于符号,因此最大值实际上只有2 ^ 31,这大约是2 ^(3 * 10):20亿的两倍。 - 16807
2147483647不带逗号。 - Vern D.
只需使用: Integer.MAX_VALUE 在Java中。 - Tim
如果你的脸上有纹身,不要忘记扭转它,使它在镜子中正确读取。否则你会看到746,384,741,2这是错误的并且会令人尴尬。 - Larry S
2,147,483,647 = 0x7FFFFFFF,如果你想记住它,只需使用十六进制。 - roottraveller


我能想到的最正确的答案是 Int32.MaxValue


460
2017-09-18 17:23



他们为我们懒惰的程序员制作了这个属性。 - Camilo Martin
在此之前,我曾经在我的所有项目中使用#define INT32_MIN和INT32_MAX。 - WildJoe
@CamiloMartin嘿。我很反感。没有更多纹身的地方了。显然,iso-8859-1 charset和Pi到31415的小数必须得到优先权 - sehe
编程时:99%的情况都是。但是你可能想要知道规划编程方法或处理数据时的情况大约是20亿,尽管这是一个非常大的数字。 :) - Andre Figueiredo
@sehe现在不是latin1 / Windows 1252已经过时了吗?如果它不能适应ASCII的7个字节,我认为它不应该在主内存中占有一席之地。我的意思是... 所有 UNICODE代码页有点用处,但超过一兆的皮肤空间似乎是浪费。 (更不用说它仍然不包括“pageup / pagedown”或“pagehome / pageend”的描述性字形)


如果您认为基数10中的值太难记住,请尝试使用基数2: 1111111111111111111111111111111


395
2018-06-01 17:05



@Nick Whaley:不,1111111111111111111111111111111是积极的。 11111111111111111111111111111111将是否定的:-) - Curd
基数16它更容易7FFFFFFF - Nelson Galdeman Graziano
@凝乳 11111111111111111111111111111111 作为基数为2的数字仍然是正数 (基数为2的负面例子是 -1)。如果表示32位2的补码数,则该位序列仅为负数:) - BlueRaja - Danny Pflughoeft
最容易记住的将是2,147,483,647。那么你要记住的只有1。 - big_tommy_7bb
@ tim_barber_7BB实际上,它是10。 - fscheidl


它是10位数,所以假装它是一个电话号码(假设你在美国)。 214-748-3647。我不建议打电话给它。


260
2017-09-18 17:24



说到记住它作为电话号码,似乎可能有一些手机垃圾邮件发送者使用它: mrnumber.com/1-214-748-3647 - Steven
“达拉斯没有”748“交易所。这个数字是假的。” - 从shambleh链接的页面 - Tarnay Kálmán
@Steven我不认为他们是垃圾邮件发送者,只是那些意外存储电话号码的人 INT 代替 VARCHAR 在MySQL中。 - Zarel
试着叫它。它响了几声然后转到错误拨号音。 =( - Krythic


如果您能记住整个Pi编号,那么您要查找的编号位于1,867,996,680位置,直到Pi的十进制数字为1,867,996,689。

数字字符串2147483647出现在Pi的1,867,996,680十进制数字处。 3.14 ...... 86181221809936452346214748364710527835665425671614 ...

资源: http://www.subidiom.com/pi/


207
2017-10-26 22:19



你知道,当我开始阅读你的答案时,我期待一些实用的东西,比如第20位。 - ExceptionSlayer
这看起来很酷。你有另一个记忆规则要记住1,867,996,680吗?我发现很难记住哪个索引开始寻找.... - Alderath
“如果你能记住整个Pi号......“ - 不,你不能,是的 不合理的 {在本问答中可能只有一两个帖子} 8-D - SlySven
@Alderath我通常记得它是sqrt(2)中的10位小数,从数字380,630,713开始.... - Henrik
记住pi需要一种非理性的头脑。 - Joshua


而不是将其视为一个大数字,尝试将其分解并寻找相关的想法,例如:

  • 最多2个斯诺克台球休息时间(最大休息时间为147)
  • 4年(48个月)
  • 3年(36个月)
  • 4年(48个月)

以上适用于最大负数;积极的是减一。

也许上面的细分对你来说不再令人难忘(这简直令人兴奋!),但希望你能提出一些想法!


153
2017-09-18 17:27



这是我见过的最复杂的肺部装置之一。令人印象深刻。 - Ben Hoffstein
嘿,像Derren Brown这样的人实际上提倡这种方法 - 将一个数字分解成随机的东西,但比一些数字更令人难忘: channel4.com/entertainment/tv/microsites/M/mindcontrol/remember/... - Luke Bennett
我有一个更好的助记符:你需要记住的是2和31,因为它显然正好是2 ^ 31!等一下... - Tamas Czinege
@DrJokepu我不确定运算符优先级......这是不是意味着 2^(31!) 要么 (2^31)!? - Alderath
像第一眼看上去一样愚蠢...它确实有效。 - Matthew Swain


最大负(32位)值:-2147483648
(1 << 31)

最大正(32位)值:2147483647
〜(1 << 31)

助记:“醉AKA角质”

drunk ========= Drinking age is 21
AK ============ AK 47
A ============= 4 (A and 4 look the same)
horny ========= internet rule 34 (if it exists, there's 18+ material of it) 

21 47 4(years) 3(years) 4(years)
21 47 48       36       48

136
2018-06-15 20:04



世界上最难以回想起的助记符。如果你能记住0118 999 88199 9119 752 ... 3你可以记住这个。 - BenM
@Rondles我认为最后它实际上是7253。 - Tim Tisdall
不。这里的饮酒年龄是18岁......好像我不能用这个助记符,我的生命被毁了。 - Joffrey
@Aaren Cordova他们曾经说过stackoverflow永远不会有趣,只不过是一个Q&A网站,我通常会指出他们这个答案。这个东西只能在天才心灵中创造,我的意思是这个 是 艺术。 - 9KSoft
最大的负32位整数,或64位,就此而言为-1。 - Fred Mitchell


无论如何,取这个正则表达式(它确定字符串是否包含十进制形式的非负整数,也不大于Int32.MaxValue)

[0-9]{1,9}|[0-1][0-9]{1,8}|20[0-9]{1,8}|21[0-3][0-9]{1,7}|214[0-6][0-9]{1,7}|2147[0-3][0-9]{1,6}|21474[0-7][0-9]{1,5}|214748[0-2][0-9]{1,4}|2147483[0-5][0-9]{1,3}|21474836[0-3][0-9]{1,2}|214748364[0-7]

也许它会帮助你记住。


63
2018-06-01 16:44



这对我来说听起来更轻松有趣。实际上它真的要容易得多 2147483647。这对OP有很大帮助 - Sнаđошƒаӽ


这就是我记忆中的方式 2147483647

  • 214 - 因为2.14大约是pi-1
  • 48 = 6 * 8
  • 64 = 8 * 8

水平写这些:

214_48_64_
and insert:
   ^  ^  ^
   7  3  7 - which is Boeing's airliner jet (thanks, sgorozco)

现在你有了2147483647。

希望这有助于至少一点。


58
2017-07-05 11:11



好一个!我认为214规则应该是pi-1。而且面具显示的是68而不是64. =)对于像我这样的航空爱好者来说,737的值应该很容易记住,它与波音的中型客机喷气机相关联。
你可以走得更远。删除小数并比较pi和2 ^ 31-1。在相同的位置,你得到141 vs 147,所以最后一位数字变为7.然后592 vs 483,所有都是相互之间的一位数。和643对647,它再次变成了7件事。 - Peter Cooper
@PeterCooper虽然pi的小数以1415926_5_35开头(注意5,而不是4) - Moberg
我的助记符是采取4294967296(这很容易记住)并除以2 - M.M


2^(x+y) = 2^x * 2^y

2^10 ~ 1,000
2^20 ~ 1,000,000
2^30 ~ 1,000,000,000
2^40 ~ 1,000,000,000,000
(etc.)

2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256
2^9 = 512

因此,2 ^ 31(signed int max)是2 ^ 30(约10亿)次2 ^ 1(2),或大约20亿。并且2 ^ 32是2 ^ 30 * 2 ^ 2或大约40亿。这种近似方法足够准确,甚至大约2 ^ 64(误差增加到大约15%)。

如果你需要一个确切的答案,那么你应该拿一个计算器。

方便的字对齐容量近似值:

  • 2 ^ 16~ = 64千// uint16
  • 2 ^ 32~ = 40亿// uint32,IPv4,unixtime
  • 2 ^ 64~ = 16 quintillion(又名160亿或1600万万)// uint64,“bigint”
  • 2 ^ 128~ = 256 quintillion quintillion(又名256万亿亿亿)// IPv6,GUID

54
2017-09-18 17:48



这就是硬盘制造商所说的。 - Scott Stafford


只需使用任何不错的计算器并在十六进制模式下键入“7FFFFFFF”,然后切换到十进制。

2147483647。


43
2017-09-18 17:47



任何体面的计算器也可以做2 ^ 31。 - Christoffer
我不知道2 ^ 31似乎还有很长的路要走:/ - States
或者只记得十六进制 - Vernon
只是... 写 它以十六进制表示要么 Int32.MaxValue/numeric_limits<int32_t>::max() - sehe
@Christoffer实际上是2 ^ 31 - 1 :) - kupsef