当前位置:  开发笔记 > 编程语言 > 正文

int32的最大值是多少?

如何解决《int32的最大值是多少?》经验,为你挑选了30个好方法。

我永远记不住这个数字.我需要一个记忆规则.



1> Ben Hoffstei..:

这是2,147,483,647.记忆它的最简单方法是通过纹身.


如果你的脸上有纹身,不要忘记扭转它,以便在镜子中正确读取.否则你会看到746,384,741,2这是错误的并且会令人尴尬.
2147483647不带逗号.
2,147,483,647 = 0x7FFFFFFF,如果你想记住它,只需使用十六进制.
我的助记符:2 ^ 10非常接近1000,所以2 ^(3*10)是1000 ^ 3或大约10亿.其中一个32位用于符号,因此最大值实际上只有2 ^ 31,这大约是2 ^(3*10):20亿的两倍.
只需在Java中使用:`Integer.MAX_VALUE`.
@AbhimanyuAryan想象一下它是一个从零开始的数组并采用公式`2 ^ index = value`.`2 ^ 0 = 1`,`2 ^ 1 = 2`,`2 ^ 2 = 4` ...`2 ^ 32 = 4294967296`等待...你只有32位,即索引0-31.要获得最大值,你实际上必须计算"2 ^ n"的总和,其中n为0到31或更简单的"2 ^ 32 - 1",你将得到'4294967295'作为unsigned int的最大值,比预期的少一个.现在对于带符号的int执行相同的"2 ^ 31 - 1",你将获得"2,147,483,647".这样做两次(一次是负的,一次是积极的),你会得到2的差异,从'2*(2 ^ 31 - 1)`到'2 ^ 32`;)
简单公式(2 << 31) - 1
@roottraveller那时,你也可以用二进制记住它; 01111111111111111111111111111111
谢谢你有趣的'纹身'
@Tim:作为纹身不太实用,虽然简洁.
答案与-2 GB中有多少字节相同。

2> Adrian Clark..:

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


他们为我们懒惰的程序员制作了这个属性.
@CamiloMartin嘿.我很反感.没有更多纹身的地方了.显然,iso-8859-1 charset和Pi到31415的小数必须得到优先权
在此之前,我曾在所有项目中使用#define INT32_MIN和INT32_MAX.
编程时:99%的情况下是.但是你可能想知道规划编程方法或处理数据时大约需要20亿,尽管它数量非常大.:)

3> Curd..:

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


@Nick Whaley:不,1111111111111111111111111111111是积极的.11111111111111111111111111111111将是否定的:-)
最容易记住的将是2,147,483,647.那么你要记住的只有1.
@ tim_barber_7BB实际上,它是10.
基数16它更容易7FFFFFFF
@Curd`11111111111111111111111111111111`作为基数为2的数字仍为正数*(基数为2的示例为负-1将为"-1")*.如果表示32位2的补码数,则该位序列仅为负数:)
基地16是好笑的7FFFFFFF是7然后是7 F.
等一下......这个数字是负数!
@ tim_barber_7BB然后你必须记住基础"2,147,483,647",所以我们回来了,我们开始了,这可能会导致堆栈溢出异常.
我喜欢一眼就能看出这是正确的方式,特别是如果你有超级大国的话

4> Diamantatos ..:

如果你能记住整个Pi数,那么你要找的数字是1,867,996,680,直到Pi的十进制数字1,867,996,689.

数字字符串2147483647出现在Pi的1,867,996,680十进制数字处.3.14 ...... 86181221809936452346 2147483647 10527835665425671614 ...

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


这看起来很酷.你有另一个记忆规则要记住1,867,996,680吗?我发现很难记住哪个索引开始寻找....
你知道,当我开始阅读你的答案时,我期待一些实用的东西,比如第20位.
"*如果你能记住整个Pi号......*" - 不,你不能,它是[*irrational*](https://en.wikipedia.org/wiki/Irrational_number){可能是一个或者本问答中的两个帖子} 8-D
@Alderath我通常记得它是sqrt(2)中的10位小数,从数字380,630,713开始....
记住pi需要一种非理性的头脑.
@Alderath:数字字符串1867996680出现在2的平方根的380,630,713rd十进制数字处.

5> WildJoe..:

它是10位数,所以假装它是一个电话号码(假设你在美国).214-748-3647.我不建议打电话给它.


@Steven我不认为他们是垃圾邮件发送者,只是在MySQL中意外地将电话号码存储为"INT"而不是"VARCHAR"的人.
说到记住它作为电话号码,似乎可能有一些手机垃圾邮件发送者使用它:http://mrnumber.com/1-214-748-3647
"达拉斯没有"748"交易所.这个数字是假的." - 来自shambleh链接的页面
试着叫它.它响了几声然后转到错误拨号音.=(

6> Luke Bennett..:

而不是将其视为一个大数字,尝试将其分解并寻找相关的想法,例如:

2次斯诺克最大休息时间(最大休息时间为147次)

4年(48个月)

3年(36个月)

4年(48个月)

以上适用于最大负数; 积极的是减一.

也许上面的细分对你来说不再令人难忘(这简直令人兴奋!),但希望你能提出一些想法!


这是我见过的最复杂的肺部装置之一.令人印象深刻.
@DrJokepu我不确定运算符优先级......这是否意味着`2 ^(31!)`或`(2 ^ 31)!`?
我有一个更好的助记符:你需要记住的是2和31,因为它显然正好是2 ^ 31!等一下...
嘿,像Derren Brown这样的人实际上提倡这种方法 - 将一个数字分解成随机的东西,但是比一大堆数字更令人难忘:http://www.channel4.com/entertainment/tv/microsites/M /mindcontrol/remember/memory.html
像第一眼看上去一样愚蠢......它确实有效.

7> Aaren Cordov..:

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

最大正(32bit)值:2147483647
~(1 << 31)

助记:"醉AKA角质"

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


世界上最难回忆的是助记符.如果你能记住0118 999 88199 9119 752 ... 3你可以记住这个.
不.这里的饮酒年龄是18岁......似乎我不能用这个助记符,我的生活被毁了.
@Rondles我认为最后它实际上是7253.
最大的负32位整数,或者64位,就是-1.
@Aaren Cordova他们曾经说过stackoverflow永远不会有趣,只不过是一个Q&A网站,我通常会指出他们这个答案.这个东西只能在天才的心灵中创造,我的意思是这个*是艺术.

8> 小智..:

无论如何,取这个正则表达式(它确定字符串是否包含十进制形式的非负整数,也不大于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`容易得多.这对OP有很大帮助

9> Mikołaj Rozw..:

这就是我记忆中的2147483647:

214 - 因为2.14大约是pi-1

48 = 6*8

64 = 8*8

水平写这些:

214_48_64_
and insert:
   ^  ^  ^
   7  3  7 - which is Boeing's airliner jet (thanks, sgorozco)

现在你有了2147483647.

希望这有助于至少一点.


我的助记符是采取4294967296(这很容易记住)并除以2
好一个!我认为214规则应该是pi-1.而且面具显示的是68而不是64. =)对于像我这样的航空爱好者来说,737的值应该很容易记住,将它与波音的中型客机喷气机联系起来.

10> Wedge..:
2^(x+y) = 2^x * 2^y

2^10 ~ 1,000
2^20 ~ 1,000,000
2^30 ~ 1,000,000,000
2^40 ~ 1,000,000,000,000
(etc.)

2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256
2^9 = 512

因此,2 ^ 31(signed 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~ = 16 quintillion(又名160亿或1600万万)// uint64,"bigint"

2 ^ 128~ = 256 quintillion quintillion(又名256万亿亿亿)// IPv6,GUID


这就是硬盘制造商所说的.

11> darron..:

只需使用任何不错的计算器并在十六进制模式下键入"7FFFFFFF",然后切换到十进制.

2147483647.


任何体面的计算器也可以做2 ^ 31.
我不知道2 ^ 31似乎还有很长的路要走:/
@Christoffer实际上是2 ^ 31 - 1 :)
只是......**用十六进制写**.或者`Int32.MaxValue` /`numeric_limits :: max()`
或者只记得十六进制

12> Martin Thoma..:

这是关于2.1 * 10^9.无需确切知道2^{31} - 1 = 2,147,483,647.

C

你可以在C中找到它:

#include 
#include 

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::max() << "\n";
std::cout << std::numeric_limits::max() << "\n";
Java的

您也可以使用Java获得此功能:

System.out.println(Integer.MAX_VALUE);

但请记住,Java整数始终是签名的.

Python 2

Python有任意精度整数.但是在Python 2中,它们被映射到C整数.所以你可以这样做:

import sys
sys.maxint
>>> 2147483647
sys.maxint + 1
>>> 2147483648L

所以Python切换到long整数大于的时候2^31 -1



13> Mark Ransom..:

这是一个记忆2**31的助记符,减去一个得到最大整数值.

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

Boys And Dogs Go Duck Hunting, Come Friday Ducks Hide
2    1   4    7  4    8        3    6      4     8

我经常使用两个18的力量来记住它们,但即使我没有记住2**31.根据需要计算太容易或使用常数,或估计为2G.


等待.这实际上有点工作.
你怎么做2 ^ 10,2 ^ 11,2 ^ 12或2 ^ 17(所有这些都有零)?
@supercat我要么改变a = 0,要么使用o = 0.

14> Aerospace..:

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

2^31 - 1 = 2147483647

为什么-1?
因为第一个是零,所以最大的是计数减一.

编辑cantfindaname88

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

Rank   1 2 3 4 5 6 ... 2147483648
Number 0 1 2 3 4 5 ... 2147483647

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

2^2 - 1 = 3

低于所有可能的3位值:(2 ^ 3 = 8个值)

1: 100 ==> -4
2: 101 ==> -3
3: 110 ==> -2
4: 111 ==> -1
5: 000 ==>  0
6: 001 ==>  1
7: 010 ==>  2
8: 011 ==>  3



15> Sarien..:

嗯,它有32位,因此可以存储2 ^ 32个不同的值.其中一半是负面的.

解决方案是2,147,483,647

最低的是-2,147,483,648.

(请注意,还有一个负值.)



16> Ivan Yurchen..:

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

您需要将数字分成3-4位数的部分,并使用手机键盘上的投影直观地记住它们.在图片上展示更容易:

在此输入图像描述

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

当您需要调用数字时,只需调用形状,想象/在手机键盘上查看并在其上投影形状.也许最初你必须要看键盘,但经过一些练习后,你会记得数字是从左上角到右下角所以你可以简单地想象它在你脑海中.

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

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



17> Joe Plante..:

对整数执行此操作的最简单方法是使用十六进制,前提是不存在类似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位.此外,许多编译器支持hex比支持二进制文件要好得多.

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位或更多



18> Sнаđошƒаӽ..:

首先写出47两次,(你喜欢Agent 47,对吗?),保持空间如图所示(每个破折号是一个数字的插槽.前2个插槽,然后4个)

--47----47

认为你12手头(因为12 =十几个).乘以4代理47的数字的第一个数字,即47,将结果放在您已经拥有的第一对的右侧

12 * 4 = 48
--4748--47 <-- after placing 48 to the right of first 47

然后乘123(为了使代理47的号码,这是第二个数字7,你需要7 - 4 = 3),并把结果前2对的右侧,最后一对槽

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.

练习几次,你就会掌握它!



19> Rune..:

2GB

(答案的最小长度是多少?)


不应该是GiB吗?
@JoukevanderMaas - 实际上,它应该是4B.
无符号整数的4GB值是正确的.如果你有一个signed int,你显然需要除以2来得到最大值
在32位中,用户进程有2GB的内存空间保留,内核有2GB的内存空间.它可以配置为内核只保留1 GB

20> Kev..:

假设.NET -

Console.WriteLine(Int32.MaxValue);



21> Mark Hurd..:

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



22> Leandro..:

记住它的最好规则是:
21(幻数!)
47(只记得它)
48(顺序!)
36(21 + 15,两个魔法!)
47再次

此外,它更容易记住5对而不是10位数.



23> 小智..:

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

例如(来自MSDN),

// numeric_limits_max.cpp

#include 
#include 

using namespace std;

int main() {
   cout << "The maximum value for type float is:  "
        << numeric_limits::max( )
        << endl;
   cout << "The maximum value for type double is:  "
        << numeric_limits::max( )
        << endl;
   cout << "The maximum value for type int is:  "
        << numeric_limits::max( )
        << endl;
   cout << "The maximum value for type short int is:  "
        << numeric_limits::max( )
        << endl;
}



24> NotMe..:

有趣的是,Int32.MaxValue的字符数多于2,147,486,647.

但话说回来,我们确实有代码完成,

所以我想我们真正需要记住的是Int3M,在visual studio中只输入6个字符.

更新 由于某种原因,我被投票了.我能想到的唯一原因是他们不理解我的第一个陈述.

"Int32.MaxValue"最多需要输入14个字符.2,147,486,647需要输入10或13个字符,具体取决于您是否输入逗号.


字符`!=`击键.对于这个可怜的.Net用户来说,它是`in` +`.` +`ma` + Return.
它可能不到那个,只需制作自己的最大值片段,"imv" 也许吧?
但重要的不是你必须键入多少个字符,而是如何记住它.我确信`Iwannagohome`比'298347829`更容易记忆.然而,没有理由为-1.

25> Brian..:

只记得2 ^(10*x)大约是10 ^(3*x) - 你可能已经习惯了千字节/千字节等.这就是:

2^10 = 1024                ~= one thousand
2^20 = 1024^2 = 1048576    ~= one million
2^30 = 1024^3 = 1073741824 ~= one billion

由于int使用31位(符号为+ ~1位),因此只需加倍2 ^ 30即可获得大约20亿.对于使用32位的unsigned int,再次加倍为40亿.当然,误差因子越大,但你不需要记忆的确切值(如果你需要它,你应该使用预定义的常量).近似值足以让人注意到什么东西可能危险地接近溢出.


Offtopic:2 ^ 4 = 4 ^ 2,因此取幂是可交换的!
@ Pier-OlivierThibault nope,我一直都在使用它!现在我需要找出为什么我的数学都出错了.可能与乘法错误有关.无论如何,再见!

26> Samuel..:

这是我如何记住2,147,483,647

到一个远处的大草原季度,乐观三重奏诅咒四十个septenary

2 - To
1 - A
4 - Far
7 - Savannah
4 - Quarter
8 - Optimus
3 - Trio
6 - Hexed
4 - Forty
7 - Septenary



27> jalf..:

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

2 ^ 10~1000

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

和2 ^ 30~1,000,000,000

双倍(2 ^ 31)是20亿,并且再次加倍(2 ^ 32)是40亿.

这是一种简单的方法来粗略估计任何二进制数.二进制中的10个零成为十进制的3个零.


但它不是2 ^ 32 - 它是(2 ^ 31)-1

28> juniperi..:

在Objective-C(iOS和OSX)中,只需记住这些宏:

#define INT8_MAX         127
#define INT16_MAX        32767
#define INT32_MAX        2147483647
#define INT64_MAX        9223372036854775807LL

#define UINT8_MAX         255
#define UINT16_MAX        65535
#define UINT32_MAX        4294967295U
#define UINT64_MAX        18446744073709551615ULL



29> 小智..:

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

如果为正数,则得到逻辑范围(前面提到过)

+2147483647至-2147483648

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

+9223372036854775807至-9223372036854775808

为什么你想要记住这个数字呢?要在你的代码中使用?您应该始终在代码中使用Int32.MaxValue或Int32.MinValue,因为这些是静态值(在.net内核中),因此比使用代码创建新int更快.

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


大多数现代计算机以"twos compliment"格式存储数字.最高(不是最低)位是符号.两个竞争对手的巧妙之处在于-ve数字由CPU的自然溢出规则处理.即0xFF为8位-1,将其添加到0x01(+1),然后得到0x100.截断8到0x00以上的位,你有答案.

30> soprof..:

请记住:21 IQ ITEM 47

它可以使用任何手机垫进行解码,也可以自己在纸上写下一个.

为了记住"21 IQ ITEM 47",我会选择"Hitman:Codename 47有21个任务,这些任务都是IQ ITEM的".

或者"我每天21:47清洁牙齿,因为我的智商高,不喜欢嘴里的东西".

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有