我永远记不起号码了。我需要一个记忆规则。
号码是2147483647。最简单的记忆方法是纹身。
我能想到的最正确的答案是
如果您认为该值太难在基数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)
也许它能帮助你记住。
这就是我记得
- 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。
是关于
你可以在C中这样找到它:
给出(没有
C++ 11
爪哇
你也可以用Java得到这个:
但是请记住,Java整数总是签名的。
Python2python具有任意精度整数。但在Python2中,它们被映射到C整数。所以你可以这样做:
所以当整数大于
这是一个记忆法,用来记住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本=一打)。乘以
然后用
最后,从最右边的数字(在本例中是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位数更容易记住。
如果您不知道
假设.NET
有趣的是,Int32.MaxValue的字符数超过了2147486647。
但是,我们还有代码完成,
所以我想我们真正需要记住的是
更新出于某种原因,我被否决了。我能想到的唯一原因是他们不理解我的第一句话。
"Int32.MaxValue"最多需要14个字符才能键入。2147486647需要10或13个字符来输入,这取决于是否输入逗号。
最容易记住的方法是看
例如(来自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到达这个号码的另一种方法:
记住这是第八个梅森素数。
如果这太难,它也是已知的四个梅森双素数中的第三个。
按注释编辑请求:
欧几里得-欧拉定理指出,每一个偶数的形式都是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快速检查
发挥你的想象力!