Wird ein long-integer-Arbeit auf einem 32 bit system?
Wenn ich verstehe es Recht eine int-variable speichern, in der 32 bit Beschränkung auf -2 Milliarden bis 2 Milliarden Euro etwas. Allerdings, wenn ich eine long-variable speichern in 64 bit, so dass viel mehr Nummern gespeichert werden. Ich Sitze auf einem 64 bit system, aber wird mein code auch auf einem 32 bit system wenn ich das speichern der Daten in 64-bit?
Danke!
- es hat nichts zu tun mit einer 32-oder 64-bit-system, es ist nur die Länge der Daten. wenn Sie eine größere Reichweite, mehr bits
- Lesen Sie die Q stärker. Fragesteller weiß, dass int 32 bit und long ist 64-bit.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht, Sie befürchten, dass. Die
long
Wert wird gespeichert werden, in 2-Speicher-Adressen.Int64
/long
immer 64bit, undInt32
/int
immer 32bit.Gibt es ein paar Folgen (in Bezug auf Speicher und performance), aber die meisten spürbar werden kann, dass die schreib - /lese-Operationen nicht atomar auf 32bit Systemen, aber Sie sollten nicht erwarten, dass Sie Atomare sowieso, da die c# - Spezifikation macht keine solche Garantie.
So oder so, der Punkt ist: dies ist nicht etwas, sollten Sie sich jemals sorgen über die CLR abstrahiert diese Dinge Weg. Verwenden Sie je nachdem, welcher Typ Ihnen am besten passt.
long
stattint
ohne dass es Konsequenzen. Manchmal gibt es Konsequenzen.Auf einem 32 bit system-Operationen auf einem 32-bit-integer durchgeführt werden können in einer einzigen Maschine zu registrieren. Aber Operationen auf einem 64-bit-integer benötigen zwei Maschine registriert, und sind etwas weniger effizient als die 32-bit-Operationen. Und natürlich, als zweimal die Größe, die
long
verwendet mehr Speicher alsint
. Wenn Sie arrays von diesen Typen, dann nehmen Sie Ihren cache doppelt so schnell, wenn Sie verwendenlong
. Das kann auch Auswirkungen auf die Leistung.So, wenn Sie verwenden können
int
sollten Sie lieberlong
. Allerdings, wenn die 32-bit-Bereich gewährtint
sind nicht ausreichend, um die Richtigkeit Ihres Programms, müssten Sielong
.Natürlich, obwohl Operationen auf 64-bit-Ganzzahlen, sind weniger effizient, wenn ausgeführt auf einer 32-bit Maschine, nur profiling würde Ihnen sagen, ob oder nicht es wirklich wichtig ist.
Vielleicht die Quintessenz ist, dass die Programmierer sollten nicht vorsätzlich verschwenderischen. Warum 64 bit wenn 32 bits ausreichen?
Ja. Der Datentyp unterstützt wird, auf beiden. Aber die 64-bit-integer nicht um native 32-bit Prozessoren. Wenn Sie eine 64-bit-Typ, und Sie kompilieren für 64 bit nur (Sie können wählen, x64 oder x86 (=32bit) als targer), und der compiler könnte die Verwendung bestimmter 64-bit-Anweisungen, so dass Ihre Anwendung laufen ein wenig schneller. Jedenfalls theoretisch, in der Praxis werden Sie wahrscheinlich nicht bemerken.
Der Nachteil ist, dass, die Anwendung wird nicht ausgeführt, auf einem 32-bit-Plattform. Die andere Weise herum arbeiten. Also, wenn Sie planen, um Sie als Ziel-Plattformen, müssen Sie entweder kompilieren für 32 bit, oder kompilieren Sie zwei mal, einmal für jede Plattform.
Für die Verfügbarkeit der
long
Typ ist es egal. Können Sie es noch immer.Können Sie selbst ausprobieren, wie diese:
Dann kompilieren Sie es als
x86
stattAnyCPU
und führen Sie es. Sie können ausführen von 32 bit Programmen auf 64-bit-Windows-als auch - sehen, was das Ergebnis ist.Gibt es noch mehr Typen wie BigInteger und Sie funktionieren auch auf 32-und 64-bit-Betriebssystemen.