Ich kann mir die Nummer nie merken. Ich brauche eine Gedächtnisregel.
Ich dachte an eine Art von Methode, die Billionen von zufälligen ganzen Zahlen erraten würde, und die höchste zurückgeben.
Ich kann mir die Nummer nie merken. Ich brauche eine Gedächtnisregel.
Ich habe ein paar geniale Methoden in C# entwickelt, die Sie in Ihrer Produktionsumgebung nutzen können:
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;
}
Denken Sie nur daran, dass es die achte Mersenne-Primzahl ist.
Wenn das zu schwer ist, ist es auch das dritte von nur vier bekannten 二重 Mersenne-Primzahlen.
Bearbeiten per Kommentar Anfrage:
Das Euklid-Euler-Theorem besagt, dass jede gerade perfekte Zahl die Form 2^(n 1) (2^n 1) hat, wobei 2^n 1 eine Primzahl ist. Die Primzahlen der Form 2^n 1 werden als Mersenne-Primzahlen bezeichnet und setzen voraus, dass n selbst eine Primzahl ist.
Wir wissen, dass die Länge eines INT32 natürlich 32 Bit beträgt. Nach dem allgemein akzeptierten Verständnis des 2er-Komplements ist ein INT32 mit Vorzeichen 32 Bit - 1 Bit.
Um den Betrag einer Binärzahl mit einer bestimmten Anzahl von Bits zu ermitteln, erhöht man im Allgemeinen 2 hoch n minus 1, wobei n gleich der Anzahl der Bits ist.
Die Berechnung des Betrags lautet also 2^(32 - 1) - 1 = 2^31 - 1. 31 ist eine Primzahl, und wie oben dargelegt, sind Primzahlen dieser Form Mersenne-Primzahlen. Wir können beweisen, dass es die achte von ihnen ist, indem wir sie einfach abzählen. Für weitere Einzelheiten fragen Sie bitte Euler oder vielleicht Bernoulli (an den er darüber schrieb).
Niemals den maximalen Wert eines Typs vergessen:
Bei 32 Bits wären die 32 Bits mit der Zahl 1 der größtmögliche Wert:
Das Ergebnis wäre 4294967295 in Dezimalzahlen:
Da es aber auch die Darstellung von negativen Zahlen gibt, dividiert man 4294967295 durch 2 und erhält 2147483647.
Eine 32-Bit-Ganzzahl kann also -2147483647 bis 2147483647 darstellen.
Man kann auch einfach 2^31 nehmen (das ist auch die Art und Weise, wie die Zahl im Speicher abgelegt ist - ein Bit für das positive/negative Flag und 31 Bits für die Zahl), was dann automatisch die Hälfte ist. Und subtrahiere eins für die Zahl Null (in deinem Fall erhältst du 2147483647.5, nicht 2147483647, da du das nicht berücksichtigst).
Das würde wahrscheinlich funktionieren. Ich wünschte, der Typ, der dich heruntergestuft hat, würde dir eine Erklärung geben.
@JoePlante Der Fragesteller wollte wissen, wie er sich als Mensch die Zahl (d. h. ihre Dezimalziffern) merken kann. Ich weiß nicht, wie es Ihnen geht, aber das Parsen von Hexadezimalzahlen und die anschließende Bitverschiebung ist für meine geistige Hardware keine intuitive Operation. Wenn Sie diesen Ansatz wählen, können Sie genauso gut einfach 2^31-1 berechnen.
Die Frage, die ich beantworten wollte, lautete: "Was ist der maximale Wert für einen int32?" Ich verstehe Ihren Standpunkt, @MarkAmery, aber wenn ich daran denke, diese Zeile in einen Interpreter oder in eine Druckanweisung einzugeben, kann ich mir die Zahlen tatsächlich merken. Es funktioniert auch als allgemeines Muster für andere Größen. Vielen Dank für die Unterstützung @JoePlante!
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
48 Stimmen
Ohne Vorzeichen: 2³²-1 = 4-1024³-1; mit Vorzeichen: -2³¹ .. +2³¹-1, weil das Vorzeichenbit das höchste Bit ist. Lerne einfach 2=1 bis 2¹=1024 und kombiniere. 1024=1k, 1024²=1M, 1024³=1G
31 Stimmen
Ich erinnere mich im Allgemeinen daran, dass alle 3 Bits etwa einer Dezimalstelle entsprechen. So komme ich auf die richtige Größenordnung: 32 Bits sind 10 Ziffern.
8 Stimmen
@JoachimSauer es kann sicherlich bei der Fehlersuche helfen, wenn man lernt, zumindest diese Art von Zahlen zu erkennen.
72 Stimmen
"Wenn eine Festplatte voll ist, werden alle MByte gelöscht und archiviert" (2 Buchstaben, 1 Buchstabe, 4 Buchstaben, 7 Buchstaben, 4 Buchstaben, 8 Buchstaben, 3 Buchstaben, 6 Buchstaben, 4 Buchstaben, 7 Buchstaben)
8 Stimmen
Ein Fall, in dem die int32 nicht ausreicht: bbc.com/news/world-asia-30288542
1 Stimmen
Warum in aller Welt wollen Sie sich die genaue Zahl merken? Was @JoachimSauer gesagt hat, ist die Art und Weise, wie Sie die Zahl loswerden.
0 Stimmen
@UltraCommit warum glaubst du, dass dein Weg mehr ist nützlich als einfache 2.147.483.647?
5 Stimmen
Auch hier gilt: "7 und sieben 'f's" ist eine leicht zu merkende Eselsbrücke! (0x7fffffff) :)
0 Stimmen
@Flinkman, Datei
limits.h
enthält all diese nützlichen Konstanten und vieles mehr. Es wäre angemessener zu fragen, "wo man all diese plattformspezifischen Werte findet".1 Stimmen
Am besten merkt man sich die Nummer nicht, sondern setzt einfach ein Lesezeichen auf eine Internetseite, auf der die Nummer steht (z. B. diese)
2 Stimmen
Fang mit 2 an...7 Tage in der Woche, 2*7=14 das ist 2147 jetzt sind die nächsten zwei 47+1=48, 214748, dann kommt die Anzahl der Tage im Jahr - 1, 365-1=364 und endest wieder mit 7. Du wirst es jetzt wohl nie mehr vergessen können :) 2 14 7 48 364 7 = 2 1 47 48 364 7 = 2147483647
0 Stimmen
Etwas weniger als die Anzahl der Aufrufe von Gangnam Style auf Youtube
3 Stimmen
Diese Art von Frage würde in der heutigen SO schamlos abgeschmettert werden. Vor allem in der Nähe bestimmter Regionen, die nicht genannt werden sollen.
0 Stimmen
Das können Sie tun
(1 << 31) -1
o(1 << -1) -1
für vorzeichenbehaftete 32-Bit- oder~0
für 32-Bit ohne Vorzeichen.0 Stimmen
Denken Sie nur daran, dass es die achte Mersenne-Primzahl ist. Das sollte Ihnen helfen, sich die Zahl zu merken.
0 Stimmen
Wenn du 1337 h4x0r bist, wirst du dich mit Piata daran erinnern: "Piata aß das Ei um" ... n00n? Sagen wir mal, sie hat das Ei mittags gegessen.
0 Stimmen
"Wenn ich eine ganze Zahl habe, dann ist die mögliche Höchstzahl nicht fünfzehn." Stattdessen sind es die verketteten Längen dieser Wörter. Cooles Zeug.
8 Stimmen
Dieser Beitrag wird diskutiert auf meta