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.

46voto

darron Punkte 4129

Nehmen Sie einfach einen beliebigen Taschenrechner und geben Sie "7FFFFFFF" im Hexadezimalmodus ein und schalten Sie dann auf Dezimal um.

2147483647.

150 Stimmen

Jeder anständige Taschenrechner kann auch 2^31 berechnen.

17 Stimmen

Ich weiß nicht, 2^31 scheint mir ein sehr langer Weg zu sein :/

2 Stimmen

Oder merken Sie es sich einfach in Hex

36voto

Martin Thoma Punkte 105621

Es geht um 2.1 * 10^9 . Es ist nicht notwendig, die genaue 2^{31} - 1 = 2,147,483,647 .

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 dies auch mit Java erreichen:

System.out.println(Integer.MAX_VALUE);

Aber denken Sie daran, dass Java-Ganzzahlen immer vorzeichenbehaftet sind.

Python 2

Python hat ganze Zahlen beliebiger Genauigkeit. Aber in Python 2 werden sie auf C-Ganzzahlen abgebildet. Sie können also Folgendes tun:

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

Daher wechselt Python zu long wenn die ganze Zahl größer wird als 2^31 -1

0 Stimmen

Die Python-Antwort ist überholt, siehe: stackoverflow.com/questions/13795758/

0 Stimmen

@NOhs Ich schätze den Link, aber meine Python-Antwort bezieht sich auf "Python 2" (ich füge die 2 zum Titel des Abschnitts hinzu, um es deutlicher zu machen). Meine Antwort ist also nicht veraltet. (Aber Python 2 ist es, zugegebenermaßen)

35voto

Mark Ransom Punkte 283960

Hier eine Gedächtnishilfe für 2**31: Ziehen Sie eins ab, um den maximalen ganzzahligen 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 18 oft genug benutzt, um sie mir zu merken, aber selbst ich habe mir nicht die Mühe gemacht, 2**31 auswendig zu lernen. Es ist zu einfach, nach Bedarf zu rechnen, eine Konstante zu verwenden oder 2G zu schätzen.

3 Stimmen

Was tun Sie bei 2^10, 2^11, 2^12 oder 2^17 (die alle Nullen haben)?

2 Stimmen

@supercat Ich würde entweder a=0 umbasen oder o=0 verwenden.

0 Stimmen

Das ist großartig. Danke, du rettest mein Leben.

31voto

Aerospace Punkte 1230

32 Bits, eines für das Vorzeichen, 31 Bits an Informationen:

2^31 - 1 = 2147483647

Warum -1?
Da die erste Null ist, ist die größte die Zählung minus eins .

EDIT für cantfindaname88

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

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

Nachfolgend alle 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

0 Stimmen

@cantfindaname88: 2^31 = Gesamtkombinationen, d. h. es reicht von 0 bis (2^31 -1). Ja, die erste ist 0.

30voto

Sarien Punkte 6302

Nun, sie hat 32 Bits und kann daher 2^32 verschiedene Werte speichern. Die Hälfte davon ist negativ.

Die Lösung lautet 2.147.483.647

Der niedrigste Wert ist 2.147.483.648.

(Beachten Sie, dass es einen weiteren negativen Wert gibt.)

0 Stimmen

Sie hat 32 Bits und kann daher 2^32 Werte speichern. Nicht weniger.

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