我总是记不住电话号码。我需要一个记忆规则。


当前回答

如果你能记住圆周率的整个数字,那么你要找的数字在圆周率的十进制数字1867996680到1867996689的位置

数字字符串2147483647出现在圆周率的十进制数字1,867,996,680。3.14......86181221809936452346214748364710527835665425671614…

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

其他回答

它是2147483647。最简单的记忆方法就是纹身。

对于整数,最简单的方法是使用十六进制,前提是没有类似Int.maxInt()的东西。原因如下:

最大无符号值

8-bit 0xFF
16-bit 0xFFFF
32-bit 0xFFFFFFFF
64-bit 0xFFFFFFFFFFFFFFFF
128-bit 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

有符号值,使用7F作为最大有符号值

8-bit 0x7F
16-bit 0x7FFF
32-bit 0x7FFFFFFF
64-bit 0x7FFFFFFFFFFFFFFF

带符号的值,使用80作为最大带符号的值

8-bit 0x80
16-bit 0x8000
32-bit 0x80000000
64-bit 0x8000000000000000

这是如何工作的呢?这与二进制策略非常相似,每个十六进制数字恰好是4位。而且,许多编译器对十六进制的支持要比对二进制的支持好得多。

F hex to binary: 1111
8 hex to binary: 1000
7 hex to binary: 0111
0 hex to binary: 0000

所以7F等于01111111 / 7FFF等于0111111111111111。此外,如果你用这个来表示“高得离谱的常数”,7F…是安全的十六进制,但它很容易尝试7F和80,只是打印到你的屏幕上,看看是哪一个。

0x7FFF + 0x0001 = 0x8000,因此您的损失只有一个数字,因此使用0x7F…对于更可靠的代码来说,这通常是一个不错的折衷,特别是当您开始使用32位或更多位的代码时

max_signed_32_bit_num = 1 << 31 - 1;  // alternatively ~(1 << 31)

编译器无论如何都应该优化它。

我更喜欢1 << 31 - 1

0x7fffffff因为你不需要计数fs

Unsigned (pow(2,31)) - 1,因为你不需要<math.h>

什么意思?应该很容易记住它是2^32。 如果你想要一个规则来记住这个数字的值,一个方便的经验法则是在二进制和十进制之间转换:

2^10 ~ 1000

这意味着2^20 ~ 1,000,000

2^30 ~ 10亿

2^31的两倍大约是20亿,2^32的两倍是40亿。

这是对任何二进制数进行粗略估计的一种简单方法。二进制中的10个0变成十进制中的3个0。

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