Frage

Ich kann nie die Nummer erinnern. Ich brauche eine Speicher Regel.

War es hilfreich?

Lösung

Es ist 2147483647. Der einfachste Weg merken es über eine Tätowierung ist.

Andere Tipps

Die richtige Antwort, die ich denken kann, ist Int32.MaxValue.

Wenn Sie den Wert denken zu hart ist in der Basis 10, sich daran zu erinnern versuchen Basis 2: 1111111111111111111111111111111

Wenn Sie die gesamte Pi Zahl erinnern können, dann ist die Zahl, die Sie suchen an der Position ist 1867996680 bis 1867996689 der Dezimalstellen von Pi

  

Die Ziffernfolge 2147483647 erscheint am 1867996680 Nachkommastelle von Pi. 3,14 ...... 86181221809936452346 2147483647 10527835665425671614 ...

Quelle: http://www.subidiom.com/pi/

Es ist 10 Stellen, so behaupten, es ist eine Telefonnummer (vorausgesetzt, Sie in den USA sind). 214-748-3647. Ich würde es nicht empfehlen anrufen.

Anstatt als eine große Anzahl davon zu halten, versuchen Sie es auf und sucht damit verbundene Ideen brechen zB:

  • 2 maximale Snooker Pausen (maximal Pause 147)
  • 4 Jahre (48 Monate)
  • 3 Jahre (36 Monate)
  • 4 Jahre (48 Monate)

Das Obige gilt für die größte negative Zahl; Positiv ist, dass minus eins.

Vielleicht wird der oben Zusammenbruch nicht mehr unvergesslich für Sie (es ist kaum aufregend ist es!), Aber hoffentlich können Sie mit ein paar Ideen kommen, die sind!

Größte negativer (32bit) Wert: -2147483648
(1 << 31)

Größte positiver (32bit) Wert: 2147483647
~ (1 << 31)

Mnemonic: "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

Wie auch immer, nehmen diese regex (es bestimmt, ob die Zeichenfolge in Dezimalform eine nicht negative Ganzzahl enthält, die auch 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.

Das ist, wie ich in Erinnerung 2147483647:

  • 214 - weil 2.14 ist etwa pi-1
  • 48 = 6 * 8
  • 64 = 8 * 8

Schreiben Sie diese horizontal:

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

Jetzt hast du 2147483647.

Hoffen, dass dies zumindest ein wenig hilft.

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

So, 2 ^ 31 (signed int max) 2 ^ 30 (etwa 1 Milliarde) mal 2 ^ 1 (2), oder etwa 2 Milliarden Euro. Und 2 ^ 32 ist 2 ^ 30 * 2 ^ 2 oder etwa 4 Milliarden. Diese Methode der Approximation ist genau genug, um sogar aus auf rund 2 ^ 64 (wo der Fehler wächst auf etwa 15%).

Wenn Sie eine genaue Antwort benötigen, dann sollten Sie einen Rechner hochziehen.

Handy Wort ausrichte Kapazität Annäherungen:

  • 2 ^ 16 ~ = 64000 // uint16
  • 2 ^ 32 ~ = 4000000000 // Uint32, IPv4, Unix-Zeit
  • 2 ^ 64 ~ = 16 Trillionen (auch bekannt als 16 Milliarden Milliarden oder 16 Millionen Billionen) // uint64 "bigint"
  • 2 ^ 128 ~ = 256 Trillionen Trillionen (auch bekannt als 256 Billionen Billionen Billionen) // IPv6, GUID

Nehmen Sie einfach jeden anständigen Rechner und geben Sie "7FFFFFFF" in Hex-Modus, wechselt dann auf Dezimal.

2147483647.

Es geht um 2.1 * 10^9. Keine Notwendigkeit, den genauen 2^{31} - 1 = 2,147,483,647 kennen.

C

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 (na ja, ohne die ,)

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

Sie können diese erhalten mit Java, auch:

System.out.println(Integer.MAX_VALUE);

Aber bedenken Sie, dass Java ganze Zahlen sind immer geschlossen.

Python 2

Python hat beliebiger Genauigkeit Integer. Aber in Python 2, werden sie auf C ganze Zahlen abgebildet. So können Sie dies tun:

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

So Python schaltet auf long, wenn die ganze Zahl wird größer als 2^31 -1

Hier ist ein mnemonic für die Erinnerung an 2 ** 31, subtrahiert den maximalen Integer-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 Zweierpotenzen bis zu 18 oft genug daran zu erinnern, sie verwendet, aber auch haben Mühe ich nicht auswendig zu lernen 2 ** 31. Es ist zu einfach nach Bedarf zu berechnen oder einen konstanten oder Schätzung als 2G verwenden.

32 Bit, eine für das Zeichen, 31 Bits an Informationen:

2^31 - 1 = 2147483647

Warum -1?
Da die erste Null ist, so dass der größte ist die zählen minus eins .

EDIT für cantfindaname88

Die Zahl ist 2 ^ 31 aber die größte sein, kann nicht 2147483648 (2 ^ 31), weil wir von 0 zählen, nicht 1.

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

Eine andere Erklärung mit nur 3 Bits: 1 für das Vorzeichen, 2 für die Information

2^2 - 1 = 3

Unter allen 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 Bit und damit speichern 2 ^ 32 verschiedene Werte. Die Hälfte davon ist negativ.

Die Lösung ist 2147483647

Und die niedrigste -2.147.483.648.

(Beachten Sie, dass es ein negativer Wert).

An diesem Punkt würde ich sagen, die einfachste mnemonic zu geben ist "stackoverflow.com" TAB "maximale int32" in Chrome.

Es gibt eine Rekursion -> Stack-Überlauf Witz dort irgendwo. Ich bin einfach nicht so geeky.

Nun, abgesehen von Witzen, wenn Sie wirklich für eine Nutzspeichers Regel suchen, gibt es eine, die ich immer für die Erinnerung an große Zahlen verwenden.

Sie benötigen eine Anzahl in Teile 3 bis 4 Ziffern zu brechen und sie erinnern visuell auf Ihrem Handy-Tastatur-Projektion. Es ist einfacher, auf einem Bild zu zeigen:

 image description hier

Wie Sie sehen können, von jetzt an Sie haben nur drei Formen erinnern, 2 von ihnen wie ein Tetris L sieht und sieht aus wie eine Zecke . Welches ist auf jeden Fall viel einfacher, als eine 10-stellige Nummer auswendig zu lernen.

Wenn Sie die Nummer erinnern müssen nur die Formen erinnern, sich vorstellen / Blick auf eine Telefontastatur und die Formen auf sie projizieren. Vielleicht zunächst werden Sie auf der Tastatur schauen, aber nach nur einem wenig Übung werden Sie sich daran erinnern, dass die Zahlen von links oben nach rechts unten gehen, so können Sie einfach es in Ihrem Kopf vorstellen.

So stellen Sie sicher, dass Sie die Richtung der Formen und die Anzahl der Stellen erinnern, in jeder Form (zum Beispiel in 2147483647 Beispiel haben wir eine 4-stellige Tetris L und eine 3-stellige L).

Sie können diese Technik verwenden, um bequem alle wichtigen Zahlen erinnern (zum Beispiel, erinnerte ich mich meiner 16-stellige Kreditkartennummer usw.).

Der einfachste Weg, dies für ganze Zahlen zu tun ist, hexadezimal zu verwenden, vorausgesetzt, dass es nicht so etwas wie Int.maxInt ist (). Der Grund ist folgender:

Max Werte ohne Vorzeichen

8-bit 0xFF
16-bit 0xFFFF
32-bit 0xFFFFFFFF
64-bit 0xFFFFFFFFFFFFFFFF
128-bit 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Signed Werte, mit 7F als max-Wert mit Vorzeichen

8-bit 0x7F
16-bit 0x7FFF
32-bit 0x7FFFFFFF
64-bit 0x7FFFFFFFFFFFFFFF

Signed Werte, mit 80 als max-Wert mit Vorzeichen

8-bit 0x80
16-bit 0x8000
32-bit 0x80000000
64-bit 0x8000000000000000

Wie funktionierts? Dies ist sehr ähnlich wie die binäre Taktik und jede Hexadezimalzeichens ist genau 4 Bits. Außerdem unterstützen viele Compiler verhexen viel besser als sie binär unterstützen.

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

So 7F 01111111 / 7FFF gleich ist, gleich 0111111111111111. Auch, wenn Sie diese verwenden für „irrsinnig hohe Konstante“, 7F ... ist sicher hex, aber es ist einfach genug, um zu versuchen, 7F und 80 und drucken sie sie einfach auf den Bildschirm, um zu sehen, welches es ist.

0x7FFF + 0x0001 = 0x8000, so dass Ihr Verlust nur eine Zahl ist, so 0x7F mit ... ist in der Regel kein schlechter Kompromiss für zuverlässigere Code, vor allem, wenn Sie beginnen mit 32-Bit oder mehr

Zuerst 47 zweimal schreiben, (Sie Agent 47 , nicht wahr?), halte Räume, wie gezeigt (jeder Strich ist ein Schlitz für eine einzelne Ziffer. 2 erste Schlitze, dann 4)

--47----47

Denken Sie in der Hand 12 haben (weil 12 = ein Dutzend). Multiplizieren sie mit 4, erster Ziffer von Agenten 47 der Nummer, das heißt 47, und das Ergebnis rechts von erstem Paar Sie bereits haben

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

Dann 12 von 3 multiplizieren (um zweite Ziffer von Agenten 47 der Nummer zu machen, die 7 ist, Sie 7 - 4 = 3 müssen) und das Ergebnis nach rechts von den ersten 2 Paaren, das letzte Paar-Steckplatz

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

ziehen Schließlich Ziffern eins nach dem anderen aus der Hand von am weitesten rechts stehende Ziffer beginnt (in diesem Fall 2) und legen Sie sie in den ersten leeren Steckplatz Sie

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

Da haben Sie es! Für negative Grenze, können Sie daran denken als 1 mehr in Absolutwert als die positive Grenze.

Üben Sie ein paar Mal, und Sie werden den Dreh raus!

2 GB

(ist es eine Mindestlänge für Antworten?)

Wenn Sie geschehen, zu wissen, Ihre ASCII-Tabelle auswendig zu aus und nicht MaxInt:
!GH6G = 21 47 48 36 47

Die beste Regel es zu merken ist:
21 (magische Zahl!)
47 (erinnern Sie es gerade)
48 (sequentielle!)
36 (21 + 15, beide magics!)
47 wieder

Auch ist es einfacher, 5 Paare als 10 Stellen zu erinnern.

Unter der Annahme, .NET -

Console.WriteLine(Int32.MaxValue);

Interessanterweise Int32.MaxValue hat mehr Zeichen als 2147486647.

Aber dann wieder, wir tun Code-Vervollständigung haben,

Also ich denke, alles, was wir wirklich auswendig lernen müssen, ist Int3<period>M<enter>, die nur 6 Zeichen ist in Visual Studio zu geben.

UPDATE Aus irgendeinem Grund war ich downvoted. Der einzige Grund, warum ich denken kann, ist, dass sie nicht meine erste Aussage verstehen.

„Int32.MaxValue“ nimmt maximal 14 Zeichen eingeben. 2147486647 nimmt entweder 10 oder 13 Zeichen je nach eingeben, wenn Sie die Kommas oder nicht setzen.

Der einfachste Weg, sich daran zu erinnern ist an std::numeric_limits< int >::max() aussehen

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;
}

Bitte beachten Sie, dass 2 ^ (10 * x) etwa 10 ^ (3 * x) - Sie sind wahrscheinlich bereits diese mit Kilobyte verwendet / kibibytes usw. 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 Bit verwendet (+ ~ 1 Bit für das Vorzeichen), verdoppeln nur 2 ^ 30 bis etwa 2 Milliarden zu erhalten. Für einen unsigned int 32 Bit verwendet wird, noch einmal verdoppeln für 4 Milliarden. Der Fehlerfaktor wird höher, je größer Sie natürlich gehen, aber Sie brauchen nicht den genauen Wert gespeichert (Wenn Sie es benötigen, sollten Sie eine vordefinierte Konstante für es trotzdem verwenden werden). Der ungefähre Wert ist gut genug für bemerken, wenn etwas ein gefährlich nahe zum Bersten sein könnte.

Dies ist, wie ich es tun 2147483647 erinnern

In weit Savanne Viertel optimus Trio verhext vierzig septenary

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

Was meinst du damit? Es sollte einfach genug sein, sich daran zu erinnern, dass es 2 ^ 32 ist. Wenn Sie eine Regel wollen den Wert dieser Nummer zu speichern, eine praktische Faustregel zur Umwandlung zwischen Zweier- und Zehner allgemein:

2 ^ 10 ~ 1000

Das bedeutet, 2 ^ 20 ~ 1000000

und 2 ^ 30 ~ 1000000000

das Doppelte (2 ^ 31) rounghly 2 Milliarden und verdoppelt das wieder (2 ^ 32) 4000000000.

Es ist eine einfache Art und Weise eine grobe Schätzung von jeder binären Zahl zu erhalten. 10 Nullen in binär werden 3 Nullen in dezimal.

Als Physiker würde ich gerade um zu 2000000000 (halb-Witz). Einfach zu merken!

In Objective-C (iOS & OSX), nur nicht vergessen, diese 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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top