Ich kann mich nie an die Nummer erinnern. Ich brauche eine Speicherregel.
Ich kann mich nie an die Nummer erinnern. Ich brauche eine Speicherregel.
Antworten:
Es ist 2.147.483.647. Der einfachste Weg, es sich zu merken, ist ein Tattoo.
Integer.MAX_VALUE
in Java.
Die richtigste Antwort, die ich mir vorstellen kann, ist Int32.MaxValue
.
Wenn Sie der Meinung sind, dass der Wert in Basis 10 zu schwer zu merken ist, versuchen Sie es mit Basis 2: 1111111111111111111111111111111
11111111111111111111111111111111
als Basis-2-Zahl wäre immer noch positiv (ein Beispiel negativ in Basis-2 wäre -1
) . Diese Folge von Bits ist nur negativ, wenn sie die Komplementzahl einer 32-Bit-2 darstellt :)
Wenn Sie sich an die gesamte Pi-Nummer erinnern können, befindet sich die gesuchte Nummer an der Position 1.867.996.680 bis 1.867.996.689 der Dezimalstellen von Pi
Die numerische Zeichenfolge 2147483647 erscheint bei der Dezimalstelle von Pi mit 1.867.996.680 Dezimalstellen. 3.14 ...... 86181221809936452346 2147483647 10527835665425671614 ...
Quelle: http://www.subidiom.com/pi/
Es ist 10-stellig, also tun Sie so, als wäre es eine Telefonnummer (vorausgesetzt, Sie befinden sich in den USA). 214-748-3647. Ich empfehle nicht, es anzurufen.
INT
statt VARCHAR
in MySQL gespeichert haben .
Anstatt es als eine große Zahl zu betrachten, versuchen Sie es aufzuschlüsseln und suchen Sie nach zugehörigen Ideen, z.
Das Obige gilt für die größte negative Zahl; positiv ist das minus eins.
Vielleicht wird die obige Aufschlüsselung für Sie nicht mehr unvergesslich sein (es ist kaum aufregend, oder?), Aber hoffentlich können Sie sich einige Ideen einfallen lassen, die es sind!
2^(31!)
oder (2^31)!
?
Größter negativer Wert (32 Bit): -2147483648
(1 << 31)
Größter positiver Wert (32 Bit): 2147483647
~ (1 << 31)
Mnemonik: "betrunken AKA geil"
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
Nehmen Sie auf jeden Fall diesen regulären Ausdruck (er bestimmt, ob die Zeichenfolge eine nicht negative Ganzzahl in Dezimalform enthält, die ebenfalls nicht größer als Int32.MaxValue ist).
[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]
Vielleicht würde es Ihnen helfen, sich zu erinnern.
2147483647
. Dies wäre eine große Hilfe für die OP
So erinnerte ich mich 2147483647
:
Schreiben Sie diese horizontal:
214_48_64_
and insert:
^ ^ ^
7 3 7 - which is Boeing's airliner jet (thanks, sgorozco)
Jetzt haben Sie 2147483647.
Hoffe das hilft zumindest ein bisschen.
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 (signiert int max) ist also 2 ^ 30 (ungefähr 1 Milliarde) mal 2 ^ 1 (2) oder ungefähr 2 Milliarden. Und 2 ^ 32 ist 2 ^ 30 * 2 ^ 2 oder ungefähr 4 Milliarden. Diese Näherungsmethode ist genau genug, um etwa 2 ^ 64 zu erreichen (wobei der Fehler auf etwa 15% ansteigt).
Wenn Sie eine genaue Antwort benötigen, sollten Sie einen Taschenrechner aufrufen.
Praktische wortausgerichtete Kapazitätsnäherungen:
Nehmen Sie einfach einen anständigen Taschenrechner und geben Sie "7FFFFFFF" im Hex-Modus ein. Wechseln Sie dann zur Dezimalstelle.
2147483647.
Int32.MaxValue
/numeric_limits<int32_t>::max()
Es geht darum 2.1 * 10^9
. Keine Notwendigkeit, das genaue zu wissen 2^{31} - 1 = 2,147,483,647
.
Sie können es in C so finden:
#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);
}
gibt (naja, ohne das ,
)
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";
Sie können dies auch mit Java erhalten:
System.out.println(Integer.MAX_VALUE);
Beachten Sie jedoch, dass Java-Ganzzahlen immer signiert sind.
Python hat Ganzzahlen mit beliebiger Genauigkeit. In Python 2 werden sie jedoch C-Ganzzahlen zugeordnet. So können Sie Folgendes tun:
import sys
sys.maxint
>>> 2147483647
sys.maxint + 1
>>> 2147483648L
Python wechselt also zu, long
wenn die Ganzzahl größer als wird2^31 -1
Hier ist eine Mnemonik zum Speichern von 2 ** 31, subtrahieren Sie eine, um den maximalen ganzzahligen Wert zu erhalten.
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
Ich habe die Potenzen von zwei bis zu 18 oft genug benutzt, um mich an sie zu erinnern, aber selbst ich habe mir nicht die Mühe gemacht, 2 ** 31 auswendig zu lernen. Es ist zu einfach, nach Bedarf zu berechnen oder eine Konstante zu verwenden oder als 2G zu schätzen.
32 Bit, eines für das Vorzeichen, 31 Bit Information:
2^31 - 1 = 2147483647
Warum -1?
Weil der erste Null ist, ist der größte der Zähler minus Eins .
BEARBEITEN für cantfindaname88
Die Anzahl ist 2 ^ 31, aber die größte kann nicht 2147483648 (2 ^ 31) sein, weil wir von 0 zählen, nicht von 1.
Rank 1 2 3 4 5 6 ... 2147483648
Number 0 1 2 3 4 5 ... 2147483647
Eine weitere Erklärung mit nur 3 Bits: 1 für das Vorzeichen, 2 für die Information
2^2 - 1 = 3
Vor allem die möglichen Werte mit 3 Bits: (2 ^ 3 = 8 Werte)
1: 100 ==> -4
2: 101 ==> -3
3: 110 ==> -2
4: 111 ==> -1
5: 000 ==> 0
6: 001 ==> 1
7: 010 ==> 2
8: 011 ==> 3
Nun, es hat 32 Bits und kann daher 2 ^ 32 verschiedene Werte speichern. Die Hälfte davon ist negativ.
Die Lösung ist 2.147.483.647
Und der niedrigste ist -2.147.483.648.
(Beachten Sie, dass es noch einen negativen Wert gibt.)
Abgesehen von Witzen, wenn Sie wirklich nach einer nützlichen Speicherregel suchen, gibt es eine, die ich immer verwende, um mich an große Zahlen zu erinnern.
Sie müssen Ihre Nummer in Teile von 3-4 Ziffern aufteilen und diese mithilfe der Projektion auf der Tastatur Ihres Mobiltelefons visuell speichern. Es ist einfacher, auf einem Bild zu zeigen:
Wie Sie sehen, müssen Sie sich von nun an nur noch 3 Formen merken, von denen 2 wie ein Tetris L und eine wie eine Zecke aussehen . Das ist definitiv viel einfacher als das Auswendiglernen einer 10-stelligen Nummer.
Wenn Sie die Nummer abrufen müssen, rufen Sie einfach die Formen ab, stellen Sie sich eine Telefontastatur vor / schauen Sie sie an und projizieren Sie die Formen darauf. Vielleicht müssen Sie zunächst auf die Tastatur schauen, aber nach ein wenig Übung werden Sie sich daran erinnern, dass die Zahlen von oben links nach unten rechts gehen, sodass Sie sie sich einfach in Ihrem Kopf vorstellen können.
Stellen Sie einfach sicher, dass Sie sich die Richtung der Formen und die Anzahl der Stellen in jeder Form merken (im Beispiel 2147483647 haben wir beispielsweise ein 4-stelliges Tetris L und ein 3-stelliges L).
Mit dieser Technik können Sie sich leicht wichtige Nummern merken (z. B. meine 16-stellige Kreditkartennummer usw.).
Der einfachste Weg, dies für ganze Zahlen zu tun, ist die Verwendung von Hexadezimalzahlen, vorausgesetzt, es gibt nicht so etwas wie Int.maxInt (). Der Grund ist folgender:
Max vorzeichenlose Werte
8-bit 0xFF
16-bit 0xFFFF
32-bit 0xFFFFFFFF
64-bit 0xFFFFFFFFFFFFFFFF
128-bit 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Vorzeichenbehaftete Werte, wobei 7F als maximaler vorzeichenbehafteter Wert verwendet wird
8-bit 0x7F
16-bit 0x7FFF
32-bit 0x7FFFFFFF
64-bit 0x7FFFFFFFFFFFFFFF
Vorzeichenbehaftete Werte, wobei 80 als maximaler vorzeichenbehafteter Wert verwendet wird
8-bit 0x80
16-bit 0x8000
32-bit 0x80000000
64-bit 0x8000000000000000
Wie funktioniert das? Dies ist der binären Taktik sehr ähnlich und jede hexadezimale Ziffer besteht aus genau 4 Bits. Außerdem unterstützen viele Compiler Hex viel besser als Binär.
F hex to binary: 1111
8 hex to binary: 1000
7 hex to binary: 0111
0 hex to binary: 0000
7F ist also gleich 01111111 / 7FFF ist gleich 0111111111111111. Wenn Sie dies für eine "wahnsinnig hohe Konstante" verwenden, ist 7F ... ein sicheres Hex, aber es ist einfach genug, 7F und 80 auszuprobieren und sie einfach auszudrucken auf Ihrem Bildschirm, um zu sehen, um welches es sich handelt.
0x7FFF + 0x0001 = 0x8000, Ihr Verlust ist also nur eine Zahl. Die Verwendung von 0x7F ... ist normalerweise kein schlechter Kompromiss für zuverlässigeren Code, insbesondere wenn Sie 32-Bit oder mehr verwenden
Schreiben Sie zuerst 47 zweimal aus (Sie mögen Agent 47 , richtig?) Und lassen Sie dabei die Leerzeichen wie gezeigt (jeder Bindestrich ist ein Steckplatz für eine einzelne Ziffer. Zuerst 2 Steckplätze, dann 4)
--47----47
Denken Sie, Sie haben 12
in der Hand (weil 12 = ein Dutzend). Multiplizieren Sie es mit der 4
ersten Ziffer der Nummer von Agent 47, dh 47
platzieren Sie das Ergebnis rechts neben dem ersten Paar, das Sie bereits haben
12 * 4 = 48
--4748--47 <-- after placing 48 to the right of first 47
Dann multiplizieren Sie 12
mit 3
(um die zweite Ziffer der Nummer von Agent 47 zu erhalten, die 7
Sie benötigen 7 - 4 = 3
) und setzen Sie das Ergebnis rechts von den ersten beiden Paaren, dem letzten Paar-Slot
12 * 3 = 36
--47483647 <-- after placing 36 to the right of first two pairs
Ziehen Sie zum Schluss die Ziffern einzeln von Ihrer Hand ab der am weitesten rechts stehenden Ziffer (in diesem Fall 2) und platzieren Sie sie in dem ersten leeren Steckplatz, den Sie erhalten
2-47483647 <-- after placing 2
2147483647 <-- after placing 1
Hier hast du es! Für ein negatives Limit können Sie sich das als 1 weiteren absoluten Wert vorstellen als die positive Grenze vorstellen.
Übe ein paar Mal und du wirst den Dreh raus bekommen!
2 GB
(Gibt es eine Mindestlänge für Antworten?)
Wenn Sie Ihre ASCII-Tabelle auswendig kennen und nicht MaxInt
:
!GH6G = 21 47 48 36 47
Der einfachste Weg, sich zu erinnern, ist zu betrachten std::numeric_limits< int >::max()
Zum Beispiel ( von 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;
}
Interessanterweise hat Int32.MaxValue mehr Zeichen als 2.147.486.647.
Aber andererseits haben wir Code-Vervollständigung,
Ich denke, alles, was wir uns wirklich merken müssen, ist Int3<period>M<enter>
, dass wir nur 6 Zeichen in Visual Studio eingeben müssen.
UPDATE Aus irgendeinem Grund wurde ich abgelehnt. Der einzige Grund, an den ich denken kann, ist, dass sie meine erste Aussage nicht verstanden haben.
Die Eingabe von "Int32.MaxValue" dauert höchstens 14 Zeichen. Für die Eingabe von 2.147.486.647 werden entweder 10 oder 13 Zeichen benötigt, je nachdem, ob Sie die Kommas eingeben oder nicht.
Iwannagohome
ist einfacher, sich zu merken als 298347829
. Kein Grund für eine -1.
!=
Tastenanschläge. Für diesen armen .Net-Benutzer ist es in
+ .
+ ma
+ Return.
Denken Sie daran, dass 2 ^ (10 * x) ungefähr 10 ^ (3 * x) ist - Sie sind wahrscheinlich bereits mit Kilobyte / Kibibyte usw. daran gewöhnt. Das heißt:
2^10 = 1024 ~= one thousand
2^20 = 1024^2 = 1048576 ~= one million
2^30 = 1024^3 = 1073741824 ~= one billion
Da ein int 31 Bits verwendet (+ ~ 1 Bit für das Vorzeichen), verdoppeln Sie einfach 2 ^ 30, um ungefähr 2 Milliarden zu erhalten. Verdoppeln Sie für ein Int ohne Vorzeichen mit 32 Bit erneut 4 Milliarden. Der Fehlerfaktor wird natürlich umso höher, je größer Sie werden, aber Sie müssen nicht den genauen Wert speichern (wenn Sie ihn benötigen, sollten Sie trotzdem eine vordefinierte Konstante dafür verwenden). Der ungefähre Wert ist gut genug, um festzustellen, wann etwas gefährlich nahe am Überlaufen sein könnte.
Was meinst du? Es sollte leicht genug sein, sich daran zu erinnern, dass es 2 ^ 32 ist. Wenn eine Regel den Wert dieser Zahl speichern soll, ist eine praktische Faustregel die Konvertierung zwischen Binär und Dezimalzahl im Allgemeinen:
2 ^ 10 ~ 1000
was 2 ^ 20 ~ 1.000.000 bedeutet
und 2 ^ 30 ~ 1.000.000.000
Das Doppelte (2 ^ 31) ist ungefähr 2 Milliarden, und das Doppelte (2 ^ 32) ist 4 Milliarden.
Es ist eine einfache Möglichkeit, eine grobe Schätzung einer beliebigen Binärzahl zu erhalten. 10 binäre Nullen werden zu 3 Dezimalstellen.
Denken Sie in Objective-C (iOS & OSX) an folgende Makros:
#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
Int32 bedeutet, dass Sie 32 Bit zum Speichern Ihrer Nummer zur Verfügung haben. Das höchste Bit ist das Vorzeichenbit. Dies zeigt an, ob die Zahl positiv oder negativ ist. Sie haben also 2 ^ 31 Bits für positive und negative Zahlen.
Wenn Null eine positive Zahl ist, erhalten Sie den logischen Bereich von (zuvor erwähnt)
+2147483647 bis -2147483648
Wenn Sie der Meinung sind, dass dies zu klein ist, verwenden Sie Int64:
+9223372036854775807 bis -9223372036854775808
Und warum zum Teufel willst du dich an diese Nummer erinnern? In Ihrem Code verwenden? Sie sollten immer Int32.MaxValue oder Int32.MinValue in Ihrem Code verwenden, da dies statische Werte (innerhalb des .net-Kerns) sind und daher schneller verwendet werden als das Erstellen eines neuen int mit Code.
Meine Aussage: Wenn Sie diese Nummer aus dem Gedächtnis kennen, geben Sie nur an!
Denken Sie daran: 21 IQ ITEM 47
Es kann mit jedem Telefonblock entschlüsselt werden, oder Sie können einfach einen auf ein Papier schreiben.
Um mich an "21 IQ ITEM 47" zu erinnern, würde ich mit "Hitman: Codename 47 hatte 21 Missionen, die jeweils für sich IQ IQEMs waren" gehen.
Oder "Ich putze jeden Tag um 21:47 Uhr die Zähne, weil ich einen hohen IQ habe und keine Gegenstände in meinem Mund mag".
de-encoded with any phone pad
?