私はその数を思い出すことができません。記憶則が必要です。
2,147,483,647です。それを暗記する最も簡単な方法は入れ墨を介してです。
私が考えることができる最も正しい答えはInt32.MaxValue
です。
値が10進数で覚えるのが非常に難しいと思う場合は、2進数を試してください。 1111111111111111111111111111111
10桁なので、電話番号のふりをします(あなたがアメリカにいると仮定します)。 214-748-3647。私はそれを呼ぶことをお勧めしません。
あなたが全体のPi数を覚えていることができるならば、あなたが探している数はPiの小数桁の1,867,996,680から1,867,996,689までの位置にあります
数字列2147483647は、Piの1,867,996,680桁に表示されます。 3.14 ...... 86181221809936452346 2147483647 10527835665425671614 ...
1つの大きな数字と考えるのではなく、それを細分化して、関連するアイデアを探してみてください。
上記は最大の負数に適用されます。プラスはマイナス1です。
たぶん、上記の内訳はあなたにとって記憶に残るものではないでしょう(それはそれほど興奮することではありません!)が、うまくいけばいくつかのアイデアを思いつくことができます!
最大の負の値(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
とにかく、この正規表現を使用してください(これは、ストリングに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]
たぶんそれはあなたが覚えておくのを助けるでしょう。
私は2147483647
を覚えています。
これらを水平に書いてください:
214_48_64_
and insert:
^ ^ ^
7 3 7 - which is Boeing's airliner jet (thanks, sgorozco)
今、あなたは2147483647を持っています。
これが少なくとも少し役立つことを願っています。
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%になる)まででさえも十分正確です。
正確な答えが必要な場合は、計算機を使用してください。
便利なワード単位の容量の近似値
まともな電卓を持って16進モードで "7FFFFFFF"とタイプしてください。
2147483647。
2.1 * 10^9
についてです。正確な2^{31} - 1 = 2,147,483,647
を知る必要はありません。
あなたはそれを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
std::cout << std::numeric_limits<int>::max() << "\n";
std::cout << std::numeric_limits<unsigned int>::max() << "\n";
これはJavaでも得られます。
System.out.println(Integer.MAX_VALUE);
ただし、Java整数は常に符号付きであることに留意してください。
Pythonは任意精度の整数を持ちます。しかしPython 2では、それらはCの整数にマッピングされます。だからあなたはこれを行うことができます:
import sys
sys.maxint
>>> 2147483647
sys.maxint + 1
>>> 2147483648L
整数が2^31 -1
より大きくなるとPythonはlong
に切り替えます
これは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と見積もることは非常に簡単です。
32ビット、符号用に1つ、31ビットの情報:
2^31 - 1 = 2147483647
なぜ-1ですか?
最初はゼロなので、最大は カウントマイナス1 です。
数は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
それは32ビットなので、2 ^ 32の異なる値を格納できます。それらの半分は否定的です。
解決策は2,147,483,647です。
そして最も低いのは-2,147,483,648です。
(もう1つ負の値があることに注意してください。)
この時点で、最も簡単なニーモニックは「stackoverflow.com」と入力することです。 TAB Chromeへの "最大int32"。
どこかに再帰 - >スタックオーバーフロージョークがあります。私はそんなにこっけいではない。
最初に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
次に、12
に3
を掛けます(エージェント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多いと考えることができます。
数回練習してみてください。
まあ、冗談はさておき、あなたが本当に便利な記憶規則を探しているなら、私がいつも大きな数を覚えるために使うものがある。
あなたは3〜4桁の部分にあなたの番号を分解し、あなたの携帯電話のキーボードの投影を使って視覚的にそれらを覚えておく必要があります。写真に表示する方が簡単です。
ご覧のとおり、これからは 3つの図形を覚えておく必要があります。そのうち2つはTetris Lのように見え、1つはティックのように見えます 。これは間違いなく10桁の数字を記憶するよりもはるかに簡単です。
数字を思い出す必要があるときは、単に図形を思い出してください。電話のキーボードを想像してみて、その上に図形を投影してください。おそらく最初はキーボードを見なければならないでしょうが、ちょっとした練習の後、数字は左上から右下に向かっていくので、頭の中でそれを想像することができるでしょう。
形状の方向と各形状の桁数を必ず覚えておいてください(たとえば、2147483647の例では、4桁のTetris Lと3桁のLがあります)。
あなたは簡単に重要な数字を覚えておくためにこのテクニックを使うことができます(例えば、私は私の16桁のクレジットカード番号などを覚えています)。
整数に対してこれを行う最も簡単な方法は、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ビット以上を使用するようになった場合は、より信頼性の高いコードが得られます。
2GB
(答えの最小長はありますか?)
あなたがたまたま自分の ASCII table を知っていてMaxInt
ではなく心から知っているなら!GH6G = 21 47 48 36 47
それを暗記するための最善のルールは次のとおりです。
21 (魔法の数!)
47 (覚えておいてください)
48 (シーケンシャル!)
36 (21 + 15、両方とも魔法!)
47 もう一度
また、10桁よりも5ペアを覚えやすいです。
.NETを想定する -
Console.WriteLine(Int32.MaxValue);
興味深いことに、Int32.MaxValueは2,147,486,647よりも多くの文字を持っています。
しかし、やはり、コード補完は必要です。
だから私たちが本当に覚えておかなければならないのはInt3<period>M<enter>
だけだと思います。これはビジュアルスタジオでタイプするのに6文字だけです。
_ update _ 何らかの理由で私は投票を控えました。私が考えることができる唯一の理由は、彼らが私の最初の声明を理解しなかったということです。
"Int32.MaxValue"はタイプするのに最高で14文字を取ります。 2,147,486,647はあなたがコンマを入れるかどうかに応じてタイプするために10か13文字を取ります。
覚える最も簡単な方法は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;
}
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億倍にします。誤差要因はもちろん大きいほど高くなりますが、正確な値を記憶する必要はありません(必要な場合は、事前に定義された定数を使用する必要があります)。おおよその値は、何かが危険なほどにオーバーフローに近いかもしれないときに気付くのに十分良いです。
これは私がそれを覚えているようにする方法です
2 - To
1 - A
4 - Far
7 - Savannah
4 - Quarter
8 - Optimus
3 - Trio
6 - Hexed
4 - Forty
7 - Septenary
どういう意味ですか? 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のゼロになります。
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
物理学者として、私は 20億 (セミジョーク)に丸めます。覚えやすい!
Int32は、あなたの番号を保存するために32ビットが利用可能であることを意味します。最上位ビットは符号ビットです。これは、数値が正か負かを示します。それで、あなたは正と負の数のための2 ^ 31ビットを持っています。
ゼロが正数であれば、あなたはの論理的範囲を得る(前述した)
+ 2147483647〜-2147483648
それが小さすぎると思う場合は、Int64を使用してください。
+ 9223372036854775807〜-9223372036854775808
そして、なぜあなたはこの数字を覚えておきたいのですか?あなたのコードで使うには?コード内では常にInt32.MaxValueまたはInt32.MinValueを使用する必要があります。これらは静的な値(.netコア内)であり、コードを使用して新しいintを作成するよりも使用が早いからです。
私の声明:記憶からこの数字を知っていれば..あなたは披露しているだけです!
これを覚えておいてください: 21 IQアイテム47
それはどんな電話パッドでも解読することができます、あるいはあなたはただ紙に自分でそれを書き留めることができます。
"21 IQ ITEM 47"を覚えておくために、 "Hitman:Codename 47は21のミッションを持っていました。それはそれぞれのIQ ITEMのものでした。
それとも「私は毎日21時47分に歯をきれいにしています、なぜなら私は高いIQを持っていて、口の中の品物が好きではないから」.
Groovyを利用する
groovy -e " println Integer.MAX_VALUE "
(Groovyは、Javaコンテキスト内でのクイックリファレンスに非常に役立ちます。)
これは私が覚えている方法です...
16進数では、数字は4ビットを表すため、4 * 8 = 32です。したがって、符号付き32ビットの最大intは
0xFFFFFFFF >> 1 # => 2147483647
Pythonで試してください。
>>> int('1' * 31, base=2)
2147483647
2147483647ですが、覚えておく必要はありません。それはあなたの番号が持つことができる桁数によって異なります。時々、代わりにshort intを使うことができます。
あなたのプログラムにとってオーバーフローが壊滅的なものとなるのであれば、サイズを無制限にするためにライブラリを使用する必要があるかもしれません(ただし遅くなります)。
本番環境で利用できるように、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;
}
2147483647
これがあなたが覚えておく必要があるものです:
したがって、2、147、483、647
Java 9のREPLを使って、 jshell :
$ jshell
| Welcome to JShell -- Version 9-Debian
jshell> System.out.println(Integer.MAX_VALUE)
2147483647
Int32の最大値は1111111111111111111111111111111 ですが、10進数では2147483647または2 ^ 31-1またはInt32.MaxValueになります
*どうやってウサギのシチューを作りますか?わからない、インターネットで調べなさい。
max_signed_32_bit_num = 1 << 31 - 1; // alternatively ~(1 << 31)
とにかくコンパイラはそれを最適化するべきです。
私は1 << 31 - 1
よりも好きです
カウントf
sが不要なため0x7fffffff
あなたは<math.h>
を必要としないのでunsigned( pow( 2, 31 ) ) - 1
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桁の有効桁だけを言いたい場合は、各二乗ステップでの計算は非常に簡単です。
私はいつもちょうど英語のアルファベットですべての可能なテキストのコレクションであるバベル図書館を調べます。
特定のセクションの特定の棚にある特定の本の特定のページへのリンクは次のとおりです。 https://libraryofbabel.info/bookmark.cgi?max_int32
CではINT32_MAX
の後に#include <stdint.h>
を使用してください。 C++ではINT32_MAX
の後に#include <cstdint>
を使用します。
プラットフォーム固有のサイズの場合はINT_MAX
、UINT32_MAX
の場合はUINT_MAX
またはunsigned int
。 http://www.cplusplus.com/reference/cstdint/ および http://www.cplusplus.com/reference/climits/ を参照してください。
またはsizeof(int)
。
一般に、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 (演算子が指定されていない場合は番号が連結されます)
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
Pythonクイックチェック
x = 48
'%d%d%d%d%d' % (x/2-3, x-1, x, x*3/4, x-1)
# gives '2147483647'
想像力を使って!
あなたの目を閉じて、そして彼のハンディキャップにもかかわらず中国で最も豊かで強力な羊飼いになった古い一本足の中国人農民王を見てください。彼の家族は彼自身、彼の妻、彼らの4人の息子と羊の犬アリスから成ります。ある日、彼は何百万もの羊で覆われた果てしない草原にそれらすべてを集めて言った。
私は古くて疲れています。それで、私は自分の財産を息子たちの間で平等に分割することにしました。
彼はすべての羊を指差した。
これら、私の子供たちはみなあなたのものです。あなた一人一人が白の羊123456789、黒の羊10101010、羊の斑点203040、子羊444888頭、ラム12000頭を飼っている。私が飼っている犬それが私が言ったことです。
彼は妻の肩と笑顔に寄りかかった。
だから...私の友人、この絵を想像してみて!あなたがそうすることができるのと同じくらい鮮やかで本当のようにそれをイメージしてください!あなたの目の前で生きるようにしよう!
それからひざまずいて...そしてカウントを始めましょう!そのフィールドのレッグ数はint32の最大値です。
ただし、説明した方法には2つの既知の欠陥があります。
覚えるのはとても簡単です。 16進数では、1桁は4ビットです。そのため、unsigned intの場合は、基数10の値を取得するために0x
および8 f
s(0xffffffff
)をPythonまたはRubyシェルに書き込みます。符号付きの値が必要な場合は、最上位ビットを符号として使用します。だからあなたはそれを除外しなければなりません。下位3ビットが1で、4ビット目が0である数が7に等しいことを覚えている必要があるだけなので、PythonまたはRubyシェルに0x7fffffff
を書きます。覚えやすいように、0x100000000 - 1
と0x80000000 - 1
を書くこともできます。
「巨大な整数がリコールされない場合、このニーモニックをリコールします。」
次に、各単語の文字を数えます。