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.

172voto

Luke Bennett Punkte 32186

Sehen Sie es nicht als eine große Zahl an, sondern versuchen Sie, sie aufzuschlüsseln und nach damit verbundenen Ideen zu suchen, z. B:

  • 2 maximale Snooker-Breaks (ein maximales Break ist 147)
  • 4 Jahre (48 Monate)
  • 3 Jahre (36 Monate)
  • 4 Jahre (48 Monate)

Das oben Gesagte gilt für die größte negative Zahl; positiv ist diese minus eins.

Vielleicht ist die obige Aufschlüsselung für Sie nicht mehr erinnerungswürdig (sie ist ja auch nicht gerade aufregend!), aber ich hoffe, Sie haben ein paar Ideen, die es sind!

99 Stimmen

Das ist eine der kompliziertesten pneumatischen Vorrichtungen, die ich je gesehen habe. Beeindruckend.

9 Stimmen

Solche Leute wie Derren Brown befürworten diese Art der Herangehensweise - eine Zahl in etwas Zufälliges zu zerlegen, das aber einprägsamer ist als eine bloße Aneinanderreihung von Zahlen: channel4.com/entertainment/tv/microsites/M/mindcontrol/remember/

19 Stimmen

Ich habe eine bessere Eselsbrücke: alles, was Sie sich merken müssen, sind 2 und 31, denn es ist genau 2^31! Oh, warte...

144voto

Aaren Cordova Punkte 2038

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

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

Eselsbrücke: "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

27 Stimmen

Die am schwierigsten abzurufende Eselsbrücke der Welt. Wenn Sie sich 0118 999 88199 9119 752...3 merken können, können Sie sich auch dies merken.

11 Stimmen

@Rondles Ich glaube, es ist tatsächlich 7253 am Ende.

0 Stimmen

Ah verdammt, ich wusste das und habe es in meinem Kopf gesungen, bevor ich es getippt habe, wie zum Teufel habe ich die beiden verwechselt. QQ

75voto

Chizh Punkte 1009

Wie auch immer, nehmen Sie diesen Regex (er bestimmt, ob die Zeichenkette eine nicht-negative ganze Zahl in Dezimalform 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.

12 Stimmen

Das klingt für mich viel einfacher und macht Spaß. Eigentlich ist es wirklich viel einfacher als 2147483647 . Dies würde eine große Hilfe für den OP sein

61voto

So erinnerte ich mich an 2147483647 :

  • 214 - denn 2,14 ist ungefähr pi-1
  • 48 = 6*8
  • 64 = 8*8

Schreiben Sie diese waagerecht:

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

Jetzt haben Sie 2147483647.

Ich hoffe, das hilft zumindest ein bisschen.

3 Stimmen

Gut gemacht! Ich denke, die 214er-Regel sollte pi - 1 sein. Außerdem zeigt die Maske 68 statt 64 =) Für Luftfahrtfans wie mich sollte der Wert 737 leicht zu merken sein, da er mit Boeings mittelgroßem Verkehrsflugzeug assoziiert wird.

0 Stimmen

Sie können noch weiter gehen. Lassen Sie das Komma weg und vergleichen Sie Pi und 2^31-1. An den gleichen Stellen erhält man 141 gegen 147, also wird die letzte Ziffer einfach zu einer 7. Dann 592 gegen 483, alle sind eine Ziffer voneinander entfernt. Und 643 gegen 647, auch hier wird die letzte Ziffer zu einer 7.

0 Stimmen

@PeterCooper Obwohl die Dezimalzahlen für Pi mit 1415926_5_35 beginnen (man beachte die 5, nicht die 4)

55voto

Wedge Punkte 19070
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) ist also 2^30 (etwa 1 Milliarde) mal 2^1 (2), also etwa 2 Milliarden. Und 2^32 ist 2^30 * 2^2 oder etwa 4 Milliarden. Diese Methode der Annäherung ist sogar bis etwa 2^64 (wo der Fehler auf etwa 15 % ansteigt) genau genug.

Wenn Sie eine genaue Antwort brauchen, sollten Sie einen Taschenrechner zur Hand nehmen.

Praktische wortorientierte Kapazitätsannäherungen:

  • 2^16 ~= 64 tausend // uint16
  • 2^32 ~= 4 Milliarden // uint32, IPv4, unixtime
  • 2^64 ~= 16 Quintillionen (aka 16 Milliarden Milliarden oder 16 Millionen Billionen) // uint64, "bigint"
  • 2^128 ~= 256 Quintillionen Quintillionen (aka 256 Billionen Billionen Billionen) // IPv6, GUID

76 Stimmen

Das haben die Festplattenhersteller gesagt.

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