int64_t Größe
-
Hi, folgende Fragen:
Ich habe ein int64_t, wieviel speicher allokiert da meine Variable erstmal ganz allgemein?
Wenn ihc jetzt eine Zahl habe, z.B. 132993784300165 , wieviel Platz würde diese Zahl theoretisch minimal benötigen (in Bytes)? Soviel ich weiß hat doch jede Zahl intern jeder Ziffer 1 Byte zugeordnet um diese darstellen zu können, oder ? Das würde heissen die Zahl benötigt minimal 15 Byte ?Viele Grüße
-
ein int64_t ist, wie der Name schon sagt, 64 Bit breit. Im Allgemeinen kann man davon ausgehen, dass ein Byte 8 Bit hat. Ein int64_t belegt dann also 8 Byte.
-
Dark_Alfred schrieb:
Wenn ihc jetzt eine Zahl habe, z.B. 132993784300165 , wieviel Platz würde diese Zahl theoretisch minimal benötigen (in Bytes)?
Rechne sie ins Binärsystem um, dann weißt du die Anzahl der Bits. Oder mach es über den Zweierlogarithmus: (nur für positive x)
Soviel ich weiß hat doch jede Zahl intern jeder Ziffer 1 Byte zugeordnet um diese darstellen zu können, oder ?
So ein System gibt es, das heißt BCD (binary coded decimal), aber das ist für normale Arithmetik nicht üblich.
-
Dark_Alfred schrieb:
Soviel ich weiß hat doch jede Zahl intern jeder Ziffer 1 Byte zugeordnet um diese darstellen zu können, oder ? Das würde heissen die Zahl benötigt minimal 15 Byte ?
Meinst du die darstellung jeder Ziffer als ASCII-Zeichen? Nein, das ist nicht üblich. Ein Computer rechnet doch nicht im Dezimal-System (kann er technisch gesehen auch nicht), sondern im Binärsystem. Dein Beispiel ist Binär dargestellt
01111000 11110101 00000111 01000101 01000010 10000101(Big Endian)
Braucht also 6 Bytes. Das heißt, dein
int64_treicht.Edit: Das geht natürlich auch einfacher. Bei etwas kleineren Zahlen kann man sich beispielsweise die nächst-größere Zweiterpotenz ansehen und daran feststellen, ob diese größer als 2 hoch...
- 8 (1 Byte (reicht)) - 16 (2 Bytes (reichen)) - 64 (8 Bytes (reichen))ist.