1378 Stimmen

Was ist der Höchstwert für einen int32?

Ich kann mir die Nummer nie merken. Ich brauche eine Gedächtnisregel.

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.

15voto

Mark Hurd Punkte 10415

Wenn Sie zufällig wissen, dass Ihr ASCII-Tabelle auswendig lernen und nicht MaxInt :
!GH6G = 21 47 48 36 47

0 Stimmen

Als ich diese Antwort schrieb, wusste ich nicht, dass GH6G so viele Google-Treffer hat, und jetzt habe ich es selbst benutzt :-)

14voto

Seq Punkte 199

Der einfachste Weg, sich daran zu erinnern, ist ein Blick auf 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;
}

14voto

NotMe Punkte 86089

Interessanterweise hat Int32.MaxValue mehr Zeichen als 2.147.486.647.

Aber andererseits haben wir ja auch die Code-Vervollständigung,

Alles, was wir uns also merken müssen, ist Int3<period>M<enter> , was in Visual Studio nur 6 Zeichen sind.

UPDATE Aus irgendeinem Grund wurde ich heruntergestuft. Der einzige Grund, den ich mir vorstellen 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 einfügen oder nicht.

2 Stimmen

Aber es kommt nicht darauf an, wie viele Zeichen man tippen muss, sondern wie man sie auswendig lernen kann. Ich bin sicher Iwannagohome ist leichter zu memorieren als 298347829 . Es gibt jedoch keinen Grund für eine -1.

3 Stimmen

Es könnte weniger als das sein, machen Sie einfach Ihre eigenen maximalen Wert Snippet, "imv" <tab> <tab> vielleicht?

4 Stimmen

Zeichen != Tastenanschläge. Für diesen armen .Net-Benutzer ist es in + . + ma +Rückkehr.

10voto

Brian Punkte 112487

Denken Sie einfach daran, dass 2^(10*x) ungefähr 10^(3*x) ist - Sie sind wahrscheinlich schon daran gewöhnt, dass es sich um Kilobytes/Kibibytes usw. handelt. 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 (+ ~1 Bit für das Vorzeichen) verwendet, verdoppeln Sie einfach 2^30, um etwa 2 Milliarden zu erhalten. Für einen vorzeichenlosen int mit 32 Bits verdoppeln Sie noch einmal und erhalten 4 Milliarden. Der Fehlerfaktor wird natürlich umso höher, je größer der Wert ist, aber Sie brauchen sich den genauen Wert nicht zu merken (wenn Sie ihn brauchen, sollten Sie ohnehin eine vordefinierte Konstante dafür verwenden). Der ungefähre Wert reicht aus, um zu bemerken, wenn etwas gefährlich nahe am Überlaufen ist.

10 Stimmen

Offtopic: 2^4 = 4^2, also ist die Potenzierung kommutativ!

10 Stimmen

@Pier-OlivierThibault nein, ich benutze es die ganze Zeit! jetzt muss ich herausfinden, warum alle meine mathematischen Ergebnisse falsch sind. wahrscheinlich hat es etwas mit Multiplikationsfehlern zu tun. wie auch immer, tschüss!

9voto

Samuel Punkte 9593

So mache ich es, um mich an 2.147.483.647 zu erinnern

In ein fernes Savannenviertel 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

CodeJaeger.com

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.

Powered by:

X