我永远记不起号码了。我需要一个记忆规则。


号码是2147483647。最简单的记忆方法是纹身。


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


如果您认为该值太难在基数10中记住,请尝试基数2:1111111111111111111111111111111111111


如果你能记住整个圆周率,那么你要找的数字就是圆周率小数位数的1867996680到1867996689的位置。

The numeric string 2147483647 appears at the 1,867,996,680 decimal digit of Pi. 3.14......86181221809936452346214748364710527835665425671614...


它是10位数,所以假设它是一个电话号码(假设你在美国)。214-783636.我不建议叫它。


与其把它看成一个大数字,不如试着把它分解并寻找相关的想法,例如:

  • 斯诺克最多休息2次(最多休息147次)
  • 4年(48个月)
  • 3年(36个月)
  • 4年(48个月)

上面适用于最大的负数;正数是负数。

也许上面的故障对你来说不会再令人难忘了(这很难让人兴奋!)但希望你能想出一些想法!


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

最大正(32位)值:2147483647
~(1<31)< BR>

助记词:"醉酒又叫好色"


无论如何,使用这个regex(它确定字符串是否包含十进制形式的非负整数,该整数也不大于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]

也许它能帮助你记住。


这就是我记得2147483647的原因:

  • 214-因为2.14大约是π-1
  • 48=6×8
  • 64=8×8

水平书写:

现在你有2147483647。

希望这至少有点帮助。


所以,2^31(有符号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~=1600万(亦称160亿或1600万万亿)//uint64,"bigint"
  • 2^128~=256万亿次(亦称256万亿万亿万亿次)//ipv6,guid

只要拿一个像样的计算器,在十六进制模式下输入"7fffffff",然后切换到十进制。

2147483647。


是关于2.1 * 10^9的。不需要知道确切的2^{31} - 1 = 2,147,483,647

C

你可以在C中这样找到它:

给出(没有,)

C++ 11

爪哇

你也可以用Java得到这个:

但是请记住,Java整数总是签名的。

Python2

python具有任意精度整数。但在Python2中,它们被映射到C整数。所以你可以这样做:

所以当整数大于2^31 -1时,python切换到long


这是一个记忆法,用来记住2*31,减去1得到最大整数值。

A=1,B=2,C=3,D=4,E=5,F=6,G=7,H=8,I=9

我经常使用2到18的力量来记住它们,但即使是我也没有费心去记住2*31。根据需要计算或使用常量,或估计为2g太容易了。


32位,一个用于符号,31位信息:

为什么?1?< BR>因为第一个是零,所以最大的是计数减去一。

为Cantfindaname88编辑

计数是2^31,但最大值不能是2147483648(2^31),因为我们从0开始计数,而不是1。

另一个只有3位的解释:1代表符号,2代表信息

在所有可能的3位值下面:(2^3=8个值)


它有32位,因此可以存储2^32个不同的值。其中一半是阴性的。

解决方案是2147483647

最低的是?2147483648。

(注意还有一个负值。)


在这一点上,我想说最简单的记忆方法是在chrome中键入"stackoverflow.com"t"maximum int32"。

这里有一个递归——>堆栈溢出的笑话。我只是没那么古怪而已。


好吧,除了开玩笑,如果你真的在寻找一个有用的记忆规则,我总是用它来记住大数字。

你需要把你的号码分成3-4位数字的部分,然后用手机键盘上的投影来直观地记住它们。在图片上更容易显示:

正如你所看到的,从现在开始你只需要记住3个形状,其中2个看起来像俄罗斯方块,1个看起来像个勾号。这绝对比记住10位数要容易得多。

当您需要回忆数字时,只需回忆形状,想象/看手机键盘,然后将形状投射到键盘上。也许刚开始你需要看键盘,但是经过一点练习,你会记住数字是从左上到右下的,所以你可以简单地想象它在你的头脑中。

只需确保记住形状的方向和每个形状中的数字(例如,在2147483647示例中,我们有一个4位数的俄罗斯方块L和一个3位数的L)。

您可以使用此技术轻松记住任何重要号码(例如,我记得我的16位信用卡号码等)。


先写47两次,(你喜欢47号探员,对吧?),如图所示保留空格(每个破折号都是一个数字槽。前2个插槽,然后4个)

你认为你手头有一本书(因为12本=一打)。乘以4,即代理47号的第一个数字,即47,然后将结果放到您已经拥有的第一对的右边。

然后用12乘以3(为了使代理47号的第二个数字,即7,您需要7 - 4 = 3并将结果放在前2对的右边,最后一对插槽

最后,从最右边的数字(在本例中是2)开始一个接一个地从手上拖动数字,并将它们放在您得到的第一个空槽中。

给你!对于负极限,可以将其视为绝对值比正极限多1个。

练习几次,你就会掌握窍门的!


对整数执行此操作的最简单方法是使用十六进制,前提是不存在类似int.maxint()的内容。原因是:

最大无符号值

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

有符号值,使用80作为最大有符号值

4

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

所以7f等于0111111/7fff等于011111111111。另外,如果你用这个来表示"非常高的常数",7f…是安全的十六进制,但它很容易试用7F和80,只需打印到您的屏幕上,看看是哪一个。

0x7fff+0x001=0x8000,所以你的损失只是一个数字,所以用0x7f…对于更可靠的代码来说,通常是一个不错的折衷,尤其是当您开始使用32位或更多的代码时。


2GB

(答案是否有最短长度?)


最好的记忆规则是:21(神奇数字!)47(记住)48(顺序!)36(21+15,两个魔术师!)47又

另外,5对比10位数更容易记住。


如果您不知道MaxInt,而是知道您的ASCII表:!GH6G = 21 47 48 36 47


假设.NET


有趣的是,Int32.MaxValue的字符数超过了2147486647。

但是,我们还有代码完成,

所以我想我们真正需要记住的是Int3M,它在Visual Studio中只需要输入6个字符。

更新出于某种原因,我被否决了。我能想到的唯一原因是他们不理解我的第一句话。

"Int32.MaxValue"最多需要14个字符才能键入。2147486647需要10或13个字符来输入,这取决于是否输入逗号。


最容易记住的方法是看std::numeric_limits< int >::max()

例如(来自msdn)

4

请记住,2^(10*x)大约是10^(3*x)-您可能已经习惯了使用千字节/千字节等,即:

因为int使用31位(+~1位作为符号),所以只需加倍2^30就可以得到大约20亿。对于一个使用32位的无符号整型,再乘以40亿。当然,误差系数越大,但不需要记忆精确的值(如果需要的话,应该使用预先定义的常量)。这个近似值足以让人注意到什么时候可能会有危险地接近溢出。


我这样做是为了记住2147483647

到一个遥远的萨凡纳四分之一的擎天柱,三人组已于九月四十日结束。

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

2 ^ 10~1000

也就是说2^20~1000000

和2^30~100000000

两倍(2^31)是20亿卢布,再翻一倍(2^32)是40亿卢布。

这是一个简单的方法来得到任何二进制数的粗略估计。二进制中的10个零变为十进制中的3个零。


作为一个物理学家,我只需要20亿(半开玩笑)。很容易记住!


在Objective-C(iOS&osx)中,只需记住以下宏:

4

有了groovy:

(Groovy对于Java上下文中的快速引用非常有用。)


Int32表示您有32位可用于存储您的号码。最高的位是符号位,这表示数字是正的还是负的。所以正负数有2^31位。

当零是正数时,您得到的逻辑范围是(前面提到的)

+2147483647至-2147483648

如果您认为这很小,请使用Int64:

+9223372036854775807至-9223372036854775808

你为什么要记住这个号码?在代码中使用?在代码中应该始终使用Int32.MaxValue或Int32.MinValue,因为它们是静态值(在.NET核心中),因此使用起来比用代码创建新的int快。

我的陈述是:如果通过记忆知道这个数字……你只是在炫耀!


二十一亿四千七百四十八万三千六百四十七

你需要记住的是:

  • 它是20亿。
  • 接下来的三个三胞胎是这样增长的:100秒,400秒,600秒。
  • 第一个和最后一个三联体需要加3个,这样它们才能四舍五入到50(例如147+3=150&647+3=650)
  • 第二个三元组需要从它中减去3才能四舍五入到80(例如483-3=480)

因此,2147483647


记住这一点:21智商项目47

它可以用任何电话簿进行编码,也可以直接写在纸上。

为了记住"21智商项目47",我会说"杀手:代号47有21个任务,每个智商项目都是自己完成的"。

或者"我每天21:47刷牙,因为我智商高,不喜欢吃东西"。


我在C中做了几个天才的方法,你可以在你的生产环境中利用它们:

4

到达这个号码的另一种方法:

  • 播放2048直到其最大理论限制。图中:在ushrt_max之前移动15次。
  • 将结果平方。关于UntuxMax。
  • 除以2和-1得到int_max。

  • 记住这是第八个梅森素数。

    如果这太难,它也是已知的四个梅森双素数中的第三个。

    按注释编辑请求:

    欧几里得-欧拉定理指出,每一个偶数的形式都是2^(n?1)(2 ^ n)?1),哪里2^n?1是质数。形式2^n的质数?1被称为梅森素数,它要求n本身是素数。

    我们知道Int32的长度当然是32位。考虑到对2的补码的普遍理解,有符号Int32是32位-1位。

    为了找到具有给定位数的二进制数的大小,我们通常将2提高到幂N减去1,其中n等于位数。

    参见:https://books.google.ie/books?ID=x7p4tcppuxoc&printsec=封面&dq=9780883853283&hl=en&sa=x&ved=0ahukewilzborjldahuoyayhcszd-eq6aeiktaa v=onepage&q=9780883853283&f=false


    尝试在Python:


    它是2147483647,但是你真的不需要记住这个。这取决于你的号码可以有多少个数字。有时你可以用短int代替。

    但是,如果溢出对程序来说是灾难性的,那么您可能需要使用一个不受限制大小的库(但速度会慢一些)。


    永远不要忘记任何类型的最大值:

    如果它有32位,最大的可能值将是数字为1的32位:

    结果将是4294967295,十进制:

    但是,由于也有负数的表示,将4294967295除以2,得到2147483647。

    因此,32位整数可以表示-2147483647到2147483647


    我就是这样记得的…
    在十六进制中,一个数字代表四位,所以4*8=32,所以最大有符号32位int是:


    使用Java 9的RePL,JSeB:


    一般来说,你可以做一个简单的操作,它反映了Int32的本质,用1填充所有可用的位——这是你可以在记忆中轻松保存的东西。它在大多数语言中的工作方式基本相同,但我将以Python为例:

    对于无符号Int32,将其设为32而不是31 1。

    但由于有更多的冒险方法,我开始考虑公式,只是为了好玩…

    公式1(如果没有给出运算符,则将数字连接起来)

    • A=4
    • B=8
    • BA/A
    • AB-1
    • 抗体
    • AB-A B
    • AB-1

    python快速检查

    公式2

    • x=48
    • x/2-3
    • X-1
    • X
    • x* 3/4
    • X-1

    python快速检查


    发挥你的想象力!