web-dev-qa-db-ja.com

Int32の最大値はいくつですか?

私はその数を思い出すことができません。記憶則が必要です。

1371
Flinkman

2,147,483,647です。それを暗記する最も簡単な方法は入れ墨を介してです。

4882
Ben Hoffstein

私が考えることができる最も正しい答えはInt32.MaxValueです。

475
Adrian Clark

値が10進数で覚えるのが非常に難しいと思う場合は、2進数を試してください。 1111111111111111111111111111111

422
Curd

10桁なので、電話番号のふりをします(あなたがアメリカにいると仮定します)。 214-748-3647。私はそれを呼ぶことをお勧めしません。 

280
WildJoe

あなたが全体のPi数を覚えていることができるならば、あなたが探している数はPiの小数桁の1,867,996,680から1,867,996,689までの位置にあります 

数字列2147483647は、Piの1,867,996,680桁に表示されます。 3.14 ...... 86181221809936452346 2147483647 10527835665425671614 ...

ソース: http://www.subidiom.com/pi/

268

1つの大きな数字と考えるのではなく、それを細分化して、関連するアイデアを探してみてください。

  • 最大スヌーカー休憩2回(最大休憩147回)
  • 4年(48ヶ月)
  • 3年(36ヶ月)
  • 4年(48ヶ月)

上記は最大の負数に適用されます。プラスはマイナス1です。

たぶん、上記の内訳はあなたにとって記憶に残るものではないでしょう(それはそれほど興奮することではありません!)が、うまくいけばいくつかのアイデアを思いつくことができます!

161
Luke Bennett

最大の負の値(32ビット):-2147483648
(1 << 31)

最大の正(32ビット)値: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
140
Aaren Cordova

とにかく、この正規表現を使用してください(これは、ストリングにInt32.MaxValue以下の10進数形式の負でない整数が含まれるかどうかを判断します) 

[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]

たぶんそれはあなたが覚えておくのを助けるでしょう。

69
Chizh

私は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を持っています。

これが少なくとも少し役立つことを願っています。

60
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倍数(別名160億億または1600万兆)// uint64、 "bigint"
  • 2 ^ 128〜= 256 quintillion quintillion(別名256兆兆兆)// IPv6、GUID
56
Wedge

まともな電卓を持って16進モードで "7FFFFFFF"とタイプしてください。

2147483647。

44
darron

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は任意精度の整数を持ちます。しかしPython 2では、それらはCの整数にマッピングされます。だからあなたはこれを行うことができます:

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

整数が2^31 -1より大きくなるとPythonはlongに切り替えます

34
Martin Thoma

これは2 ** 31を思い出すためのニーモニックです。最大の整数値を得るために1を引きます。

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

私はそれらを覚えるのに十分な頻度で2から18までの2のべき乗を使いました、しかし私でさえ2 ** 31を暗記することを気にしていません。必要に応じて計算すること、定数を使用すること、または2Gと見積もることは非常に簡単です。

33
Mark Ransom

32ビット、符号用に1つ、31ビットの情報:

2^31 - 1 = 2147483647

なぜ-1ですか?
最初はゼロなので、最大は カウントマイナス1 です。

cantfindaname88のEDIT

数は2 ^ 31ですが、最大数を2147483648(2 ^ 31)にすることはできません。これは、1ではなく0から数えるためです。

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
31
Aerospace

それは32ビットなので、2 ^ 32の異なる値を格納できます。それらの半分は否定的です。

解決策は2,147,483,647です。

そして最も低いのは-2,147,483,648です。

(もう1つ負の値があることに注意してください。)

29
Sarien

この時点で、最も簡単なニーモニックは「stackoverflow.com」と入力することです。 TAB Chromeへの "最大int32"。

どこかに再帰 - >スタックオーバーフロージョークがあります。私はそんなにこっけいではない。

28

最初に47を2回書きます( Agent 47 が好きですか?)、スペースを図のように保ちます(各ダッシュは1桁のスロットです。最初の2スロット、次に4)

--47----47

12が手元にあると考えてください(12 = 1ダースだから)。 4、Agent 47の番号の最初の桁、つまり47を掛けて、結果をすでに持っている最初のペアの右側に配置します

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

次に、123を掛けます(エージェント47の番号の2桁目、つまり7を作成するには、7 - 4 = 3が必要です)、結果を最初の2ペア、最後のペアスロット

12 * 3 = 36
--47483647 <-- after placing 36 to the right of first two pairs

最後に、右端の数字(この場合は2)から始めて、数字を1つずつ手からドラッグし、最初の空のスロットに配置します。

2-47483647 <-- after placing 2
2147483647 <-- after placing 1

そこにある!負の制限については、正の制限よりも絶対値で1多いと考えることができます。

数回練習してみてください。

21

まあ、冗談はさておき、あなたが本当に便利な記憶規則を探しているなら、私がいつも大きな数を覚えるために使うものがある。

あなたは3〜4桁の部分にあなたの番号を分解し、あなたの携帯電話のキーボードの投影を使って視覚的にそれらを覚えておく必要があります。写真に表示する方が簡単です。

enter image description here

ご覧のとおり、これからは 3つの図形を覚えておく必要があります。そのうち2つはTetris Lのように見え、1つはティックのように見えます 。これは間違いなく10桁の数字を記憶するよりもはるかに簡単です。

数字を思い出す必要があるときは、単に図形を思い出してください。電話のキーボードを想像してみて、その上に図形を投影してください。おそらく最初はキーボードを見なければならないでしょうが、ちょっとした練習の後、数字は左上から右下に向かっていくので、頭の中でそれを想像することができるでしょう。

形状の方向と各形状の桁数を必ず覚えておいてください(たとえば、2147483647の例では、4桁のTetris Lと3桁のLがあります)。

あなたは簡単に重要な数字を覚えておくためにこのテクニックを使うことができます(例えば、私は私の16桁のクレジットカード番号などを覚えています)。

21
Ivan Yurchenko

整数に対してこれを行う最も簡単な方法は、Int.maxInt()のようなものがないという条件で、16進数を使用することです。その理由はこれです:

符号なしの最大値

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

これはどのように作動しますか?これは2進戦術と非常によく似ており、各16進数は正確に4ビットです。また、多くのコンパイラはバイナリをサポートするよりもはるかに良くhexをサポートします。 

F hex to binary: 1111
8 hex to binary: 1000
7 hex to binary: 0111
0 hex to binary: 0000

つまり、7Fは0111111111/7FFFは0111111111111111に等しい。また、これを "非常に高い定数"に使っているのであれば、7F ...は安全な16進数ですが、7Fと80を試して印刷するだけで十分簡単です。それがどれであるか見るためにあなたのスクリーンに。

0x7FFF + 0x0001 = 0x8000なので、損失は1つの数字にすぎません。そのため、0x7Fを使用すると、特に32ビット以上を使用するようになった場合は、より信頼性の高いコードが得られます。

21
Joe Plante

2GB

(答えの最小長はありますか?)

19
Rune

あなたがたまたま自分の ASCII table を知っていてMaxIntではなく心から知っているなら
!GH6G = 21 47 48 36 47

16
Mark Hurd

それを暗記するための最善のルールは次のとおりです。
21 (魔法の数!)
47 (覚えておいてください)
48 (シーケンシャル!)
36 (21 + 15、両方とも魔法!)
47 もう一度

また、10桁よりも5ペアを覚えやすいです。

16
MacGyver

.NETを想定する -

Console.WriteLine(Int32.MaxValue);
15
Kev

興味深いことに、Int32.MaxValueは2,147,486,647よりも多くの文字を持っています。

しかし、やはり、コード補完は必要です。

だから私たちが本当に覚えておかなければならないのはInt3<period>M<enter>だけだと思います。これはビジュアルスタジオでタイプするのに6文字だけです。

_ update _ 何らかの理由で私は投票を控えました。私が考えることができる唯一の理由は、彼らが私の最初の声明を理解しなかったということです。

"Int32.MaxValue"はタイプするのに最高で14文字を取ります。 2,147,486,647はあなたがコンマを入れるかどうかに応じてタイプするために10か13文字を取ります。

15
NotMe

覚える最も簡単な方法は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;
}
14
Seq

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を2倍すると約20億になります。 32ビットを使用するunsigned intの場合は、もう一度40億倍にします。誤差要因はもちろん大きいほど高くなりますが、正確な値を記憶する必要はありません(必要な場合は、事前に定義された定数を使用する必要があります)。おおよその値は、何かが危険なほどにオーバーフローに近いかもしれないときに気付くのに十分良いです。

11
Brian

これは私がそれを覚えているようにする方法です

はるかにサバンナ地区のオプティマストリオに40の40の六十六

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

どういう意味ですか? 2 ^ 32であることを覚えておくのは十分に簡単なはずです。その数の値を記憶するための規則が必要な場合は、一般に2進数と10進数の間の変換に便利な経験則があります。

2 ^ 10〜1000

つまり2 ^ 20〜1,000,000

そして2 ^ 30〜1,000,000,000

その2倍の(2 ^ 31)は約20億であり、その2倍(2 ^ 32)は40億である。

任意の2進数を概算するのは簡単な方法です。 2進数の10のゼロは10進数の3のゼロになります。

7
jalf

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
6
juniperi

物理学者として、私は 20億 (セミジョーク)に丸めます。覚えやすい!

6
bersling

Int32は、あなたの番号を保存するために32ビットが利用可能であることを意味します。最上位ビットは符号ビットです。これは、数値が正か負かを示します。それで、あなたは正と負の数のための2 ^ 31ビットを持っています。 

ゼロが正数であれば、あなたはの論理的範囲を得る(前述した)

+ 2147483647〜-2147483648

それが小さすぎると思う場合は、Int64を使用してください。

+ 9223372036854775807〜-9223372036854775808

そして、なぜあなたはこの数字を覚えておきたいのですか?あなたのコードで使うには?コード内では常にInt32.MaxValueまたはInt32.MinValueを使用する必要があります。これらは静的な値(.netコア内)であり、コードを使用して新しいintを作成するよりも使用が早いからです。

私の声明:記憶からこの数字を知っていれば..あなたは披露しているだけです!

5

これを覚えておいてください: 21 IQアイテム47

それはどんな電話パッドでも解読することができます、あるいはあなたはただ紙に自分でそれを書き留めることができます。

"21 IQ ITEM 47"を覚えておくために、 "Hitman:Codename 47は21のミッションを持っていました。それはそれぞれのIQ ITEMのものでした。

それとも「私は毎日21時47分に歯をきれいにしています、なぜなら私は高いIQを持っていて、口の中の品物が好きではないから」.

5
soprof

Groovyを利用する

groovy -e " println Integer.MAX_VALUE "

(Groovyは、Javaコンテキスト内でのクイックリファレンスに非常に役立ちます。)

4
Michael Easter

任意の型の最大値を決して忘れないようにするには

32ビットの場合、最大値は1の32ビットです。

enter image description here

結果は10進数で4294967295です。

enter image description here

しかし、負数の表現もあるので、4294967295を2で割り、2147483647を得ます。

したがって、32ビット整数は-2147483647〜2147483647を表すことができます。

2

これは私が覚えている方法です...
16進数では、数字は4ビットを表すため、4 * 8 = 32です。したがって、符号付き32ビットの最大intは

0xFFFFFFFF >> 1 # => 2147483647
2
Sean Vikoren

Pythonで試してください。

>>> int('1' * 31, base=2)
2147483647
2
g10guang

2147483647ですが、覚えておく必要はありません。それはあなたの番号が持つことができる桁数によって異なります。時々、代わりにshort intを使うことができます。

あなたのプログラムにとってオーバーフローが壊滅的なものとなるのであれば、サイズを無制限にするためにライブラリを使用する必要があるかもしれません(ただし遅くなります)。

2
theo2003

本番環境で利用できるように、C#で2つの天才な方法を作りました。

public static int GetIntMaxValueGenius1()
{
    int n = 0;
    while (++n > 0) { }
    return --n;
}

public static int GetIntMaxValueGenius2()
{
    int n = 0;
    try
    {
        while (true)
            n = checked(n + 1);
    }
    catch { }
    return n;
}
2
yazanpro

2147483647

これがあなたが覚えておく必要があるものです:

  • それは20億です。
  • 次の3つのトリプレットは次のように増えています。100s、400s、600s
  • 最初と最後のトリプレットには3を追加して50に切り上げる必要があります(例147 + 3 = 150&647 + 3 = 650)
  • 2番目のトリプレットは3を引いて80に切り捨てる必要があります(例:483 - 3 = 480)。

したがって、2、147、483、647

2
G.Rassovsky

この数に達するためのもう一つの方法:

  1. 最大理論上の限界まで2048をプレイする。写真では、15がUSHRT_MAXの前に移動します。
  2. 結果を二乗してください。 UINT_MAXについて.
  3. INT_MAXを取得するには、2と-1で除算します。

enter image description here

2
Uri

Java 9のREPLを使って、 jshell

$ jshell
|  Welcome to JShell -- Version 9-Debian

jshell> System.out.println(Integer.MAX_VALUE)
2147483647
1
Michael Easter

Int32の最大値は1111111111111111111111111111111 ですが、10進数では2147483647または2 ^ 31-1またはInt32.MaxValueになります

1
trinalbadger587
  1. ウサギを31代飼育する。
  2. 1羽のウサギを煮込む
  3. 残りのウサギを数えます。

*どうやってウサギのシチューを作りますか?わからない、インターネットで調べなさい。

0
Bob Stein
max_signed_32_bit_num = 1 << 31 - 1;  // alternatively ~(1 << 31)

とにかくコンパイラはそれを最適化するべきです。

私は1 << 31 - 1よりも好きです 

カウントfsが不要なため0x7fffffff

あなたは<math.h>を必要としないのでunsigned( pow( 2, 31 ) ) - 1

0
lllllllllll

2 ^ 31 - 1(32ビット、1は符号に使用されます)です。

おおよその値が欲しいなら、2 ^ 10 = 1024〜10 ^ 3を使うので、2 ^ 31〜2 * 10 ^ 9となる。正確な値を手動で計算したい場合は、2乗による指数化を使用して2 ^ 32 = 2 ^(2 ^ 5)にし、2で割ります。あなたは2 ^ 32を得るために5回二乗する必要があるだけです:

2*2 = 4
4*4 = 16
16*16 = 256
256*256 = 25*25*100 + 2*250*6 + 36 = 62500 + 3000 + 36 = 65536
65536*65536 =65000*65000 + 2*65000*536 + 536*536 =  
4225000000 + 130000*536 + (250000 + 3600 + 36*36) =
4225000000 + 69680000 + 250000 + 3600 + 1296 =
4294967296

これを2で割って1を引くと、2147483647が得られます。すべての桁が必要ではなく、最初の3桁の有効桁だけを言いたい場合は、各二乗ステップでの計算は非常に簡単です。

0
saolof

私はいつもちょうど英語のアルファベットですべての可能なテキストのコレクションであるバベル図書館を調べます。

特定のセクションの特定の棚にある特定の本の特定のページへのリンクは次のとおりです。 https://libraryofbabel.info/bookmark.cgi?max_int32

0
Thediabloman

CではINT32_MAXの後に#include <stdint.h>を使用してください。 C++ではINT32_MAXの後に#include <cstdint>を使用します。

プラットフォーム固有のサイズの場合はINT_MAXUINT32_MAXの場合はUINT_MAXまたはunsigned inthttp://www.cplusplus.com/reference/cstdint/ および http://www.cplusplus.com/reference/climits/ を参照してください。

またはsizeof(int)

0
Reed Hedges

一般に、Int32の本質を反映した単純な操作を行うことができます。利用可能なすべてのビットを1で埋めます。これは、メモリに簡単に保持できるものです。ほとんどの言語で基本的に同じように機能しますが、例としてPythonを使用します。

max = 0
bits = [1] * 31 # Generate a "bit array" filled with 1's
for bit in bits:
    max = (max << 1) | bit
# max is now 2147483647

符号なしInt32の場合は、31 1の代わりに32にします。

しかし、もっと冒険的なアプローチがいくつか掲載されているので、数式のことを考え始めました。

式1 (演算子が指定されていない場合は番号が連結されます)

  • a = 4
  • b = 8
  • ba/a
  • ab-1
  • ab
  • ab-a-b
  • ab-1

Pythonクイックチェック

a = 4
b = 8
ab = int('%d%d' % (a, b))
ba = int('%d%d' % (b, a))
'%d%d%d%d%d' % (ba/a, ab-1, ab, ab-a-b, ab-1)
# gives '2147483647'

式2

  • x = 48
  • x/2-3
  • x-1
  • バツ
  • x * 3/4
  • x-1

Pythonクイックチェック

x = 48
'%d%d%d%d%d' % (x/2-3, x-1, x, x*3/4, x-1) 
# gives '2147483647'
0
wiesion

想像力を使って!

あなたの目を閉じて、そして彼のハンディキャップにもかかわらず中国で最も豊かで強力な羊飼いになった古い一本足の中国人農民王を見てください。彼の家族は彼自身、彼の妻、彼らの4人の息子と羊の犬アリスから成ります。ある日、彼は何百万もの羊で覆われた果てしない草原にそれらすべてを集めて言った。

私は古くて疲れています。それで、私は自分の財産を息子たちの間で平等に分割することにしました。

彼はすべての羊を指差した。

これら、私の子供たちはみなあなたのものです。あなた一人一人が白の羊123456789、黒の羊10101010、羊の斑点203040、子羊444888頭、ラム12000頭を飼っている。私が飼っている犬それが私が言ったことです。

彼は妻の肩と笑顔に寄りかかった。

だから...私の友人、この絵を想像してみて!あなたがそうすることができるのと同じくらい鮮やかで本当のようにそれをイメージしてください!あなたの目の前で生きるようにしよう!

それからひざまずいて...そしてカウントを始めましょう!そのフィールドのレッグ数はint32の最大値です。

ただし、説明した方法には2つの既知の欠陥があります。

  1. 人間の想像力には限界がありません...だから、足を数えている間に羊を増やさずに自分自身を制限してその畑の羊の正確な数を想像するのは困難です。
  2. 人間は怠惰です…だから多くの人は足を数える代わりに羊を数えて4倍にしようとしますが……何を推測します - 彼らは眠りに落ちます。
0
StoYan

覚えるのはとても簡単です。 16進数では、1桁は4ビットです。そのため、unsigned intの場合は、基数10の値を取得するために0xおよび8 fs(0xffffffff)をPythonまたはRubyシェルに書き込みます。符号付きの値が必要な場合は、最上位ビットを符号として使用します。だからあなたはそれを除外しなければなりません。下位3ビットが1で、4ビット目が0である数が7に等しいことを覚えている必要があるだけなので、PythonまたはRubyシェルに0x7fffffffを書きます。覚えやすいように、0x100000000 - 10x80000000 - 1を書くこともできます。

0
panzi

「巨大な整数がリコールされない場合、このニーモニックをリコールします。」

次に、各単語の文字を数えます。

0
Matt Malone