我总是记不住电话号码。我需要一个记忆规则。
当前回答
最大负值(32位):-2147483648 (1 << 31)
最大正(32位)值:2147483647 ~(1 << 31)
记忆:“醉酒又好色”
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
其他回答
假设。net -
Console.WriteLine(Int32.MaxValue);
我是这样记得的…… 在十六进制中,一个数字代表4位,所以4 * 8 = 32,所以最大有符号的32位整型是:
0xFFFFFFFF >> 1 # => 2147483647
首先写出两次47(你喜欢47号特工,对吧?),保持如图所示的空格(每个破折号是一个数字的槽位。先2个,然后4个)
--47----47
认为你手里有12个(因为12 =一打)。将其乘以4,47号特工号的第一位数字,即47,并将结果放在你已经拥有的第一对的右边
12 * 4 = 48
--4748--47 <-- after placing 48 to the right of first 47
然后将12乘以3(为了得到47号特工的数字的第二个数字,即7,你需要7 - 4 = 3),并将结果放在前两对的右边,即最后一个对槽
12 * 3 = 36
--47483647 <-- after placing 36 to the right of first two pairs
最后,从最右边的数字(本例中为2)开始,一个接一个地从您的手中拖动数字,并将它们放在您获得的第一个空槽中
2-47483647 <-- after placing 2
2147483647 <-- after placing 1
你知道了!对于负极限,你可以认为它的绝对值比正极限大1。
练习几次,你就会掌握窍门的!
大约是2.1 * 10^9。不需要知道确切的2^{31}- 1 = 2,147,483,647。
C
你可以在C语言中找到它:
#include <stdio.h>
#include <limits.h>
main() {
printf("max int:\t\t%i\n", INT_MAX);
printf("max unsigned int:\t%u\n", UINT_MAX);
}
给出(好吧,没有,)
max int: 2,147,483,647
max unsigned int: 4,294,967,295
C + 11 +
std::cout << std::numeric_limits<int>::max() << "\n";
std::cout << std::numeric_limits<unsigned int>::max() << "\n";
Java
你也可以用Java得到这个:
System.out.println(Integer.MAX_VALUE);
但是请记住,Java整数总是有符号的。
Python 2
Python有任意的精确整数。但在python2中,它们被映射为C整数。所以你可以这样做:
import sys
sys.maxint
>>> 2147483647
sys.maxint + 1
>>> 2147483648L
所以当整数大于2^31 -1时,Python会切换为long
它有32位,因此可以存储2^32个不同的值。其中一半是负面的。
答案是2147,483,647
最低的是- 2,147,483,648。
(注意这里多了一个负数。)
推荐文章
- 如何优雅地检查一个数字是否在一个范围内?
- 从整数列表中,求出最接近给定值的数
- 在python中将整数转换为二进制
- 如何将对象转换为int型
- Java如何处理整数下溢和溢出,如何检查它?
- 在Java和c#中,int和Integer的区别是什么?
- 是否有一种方法可以迭代一系列整数?
- 为什么整数除法产生一个浮点数而不是另一个整数?
- 在python中最安全的方法将浮点数转换为整数?
- 我如何工作围绕JavaScript的parseInt八进制行为?
- 将两个整数以唯一且确定的方式映射为一个整数
- 如何在Java中正确地比较两个整数?
- 将逗号分隔的字符串转换为整数数组?
- 将逗号分隔的字符串转换为整数数组?
- 整数的最大值