我总是记不住电话号码。我需要一个记忆规则。
当前回答
记住这是8梅森素数。
如果这太难了,它也是已知的四个双梅森质数中的第三个。
编辑每个评论请求:
欧几里得-欧拉定理指出,每个偶数完全数都具有2^(n−1)(2^n−1)的形式,其中2^n−1是质数。2^n−1形式的质数被称为梅森质数,并且要求n本身是质数。
我们知道INT32的长度当然是32位。根据对2的补码的普遍理解,有符号的INT32是32位- 1位。
为了求出具有给定位数的二进制数的大小,我们通常取2的n - 1次方,其中n等于位数。
因此,大小计算为2^(32 - 1)- 1 = 2^31 - 1。31是质数,如上所述,这种形式的质数是梅森质数。我们只要数一数就能证明它是八个这样的物体。要了解更多细节,请问欧拉,或者伯努利(他给他写信)。
见:https://books.google.ie/books?id=x7p4tCPPuXoC&printsec=frontcover&dq=9780883853283&hl=en&sa=X&ved=0ahUKEwilzbORuJLdAhUOiaYKHcsZD-EQ6AEIKTAA v = onepage&q = 9780883853283 f = false
其他回答
不要把它看成一个大数字,试着把它分解,然后寻找相关的想法。例如:
斯诺克的最大击球次数为2次(最大击球次数为147次) 4年(48个月) 3年(36个月) 4年(48个月)
上述适用于最大的负数;正的是- 1。
也许上面的分类对你来说不会再令人难忘了(它并不令人兴奋!),但希望你能想出一些令人难忘的主意!
对于整数,最简单的方法是使用十六进制,前提是没有类似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位或更多位的代码时
好吧,除了笑话,如果你真的在寻找一个有用的记忆规则,有一个我经常用来记住大数字的规则。
你需要把你的数字分成3-4个数字,然后用手机键盘上的投影来直观地记住它们。更容易在图片上显示:
正如你所看到的,从现在开始你只需要记住3个形状,其中2个看起来像俄罗斯方块L,一个看起来像一个勾。这绝对比记忆一个10位数要容易得多。
当你需要回忆数字的时候,回忆一下数字的形状,想象一下手机键盘上的形状,然后投射到键盘上。也许一开始你必须看着键盘,但经过一点练习,你就会记住数字是从左上到右下的,这样你就能在脑海中简单地想象它了。
只要确保你记得形状的方向和每个形状中的数字数量(例如,在2147483647的例子中,我们有一个4位数的俄罗斯方块L和一个3位数的L)。
你可以使用这个技巧轻松地记住任何重要的数字(例如,我记得我的16位信用卡号码等)。
无论如何,取这个正则表达式(它确定字符串是否包含一个十进制形式的非负整数,也不大于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] [0-9] {1, 5} | 21 4748 [2-0] [0-9] {1, 4} | 2147483 [0 to 5] [0-9] {1, 3} | 21474836 [0, 3] [0-9] {1, 2} | 214748364 [0]
也许能帮你记起来。
最简单的方法是查看std::numeric_limits< int >::max()
例如(来自MSDN),
// numeric_limits_max.cpp
#include <iostream>
#include <limits>
using namespace std;
int main() {
cout << "The maximum value for type float is: "
<< numeric_limits<float>::max( )
<< endl;
cout << "The maximum value for type double is: "
<< numeric_limits<double>::max( )
<< endl;
cout << "The maximum value for type int is: "
<< numeric_limits<int>::max( )
<< endl;
cout << "The maximum value for type short int is: "
<< numeric_limits<short int>::max( )
<< endl;
}
推荐文章
- Java整数到字节数组
- 如何优雅地检查一个数字是否在一个范围内?
- 从整数列表中,求出最接近给定值的数
- 在python中将整数转换为二进制
- 如何将对象转换为int型
- Java如何处理整数下溢和溢出,如何检查它?
- 在Java和c#中,int和Integer的区别是什么?
- 是否有一种方法可以迭代一系列整数?
- 为什么整数除法产生一个浮点数而不是另一个整数?
- 在python中最安全的方法将浮点数转换为整数?
- 我如何工作围绕JavaScript的parseInt八进制行为?
- 将两个整数以唯一且确定的方式映射为一个整数
- 如何在Java中正确地比较两个整数?
- 将逗号分隔的字符串转换为整数数组?
- 将逗号分隔的字符串转换为整数数组?