Wieviel MB braucht eine bestimmte Zahl

Hallo!

ich hab folgendes Problem.
Ich hab hier eine Zahl 17179869187 ( 2^34 + 3) die im Computer dargestellt werden soll.

Weiß jemand von euch wieviel MB und wieviel Mebibyte ich dafürbenötige und wie man das berechnet?

Hallo Frawec,

Ich hab hier eine Zahl 17179869187 ( 2^34 + 3) die im Computer
dargestellt werden soll.

Weiß jemand von euch wieviel MB und wieviel Mebibyte ich
dafürbenötige und wie man das berechnet?

Das kommt aus die Codierung an: im günstigen Fall (Standard Binärcodierung) kommst du mit 34 bit = (aufgerundet) 5 Byte aus. Ein Compiler wird daraus sagen wir einmal eine 64bit = 8 Byte machen, wenn er einen seiner Standardtypen (Zahlen mit 8, 16, 32 oder 64 Bit) macht.

Man kann die Zahl natülich auch ganz anders codieren - der Länge nach oben sind dabei keine Grenzen gesetzt. Wenn du in deinem Programm Zahlen z.B. so codierst, dass du die gesetzten Bits in einem Array zählst, benötigtst du z.B. 2^34 bits = 2^26 Bytes = 0,5 GByte - und noch eine Menge Zeit, um all die Bits zu zählen :wink:.

gruss
bernhard

deinem Programm Zahlen z.B. so codierst, dass du die gesetzten
Bits in einem Array zählst, benötigtst du z.B. 2^34 bits =
2^26 Bytes = 0,5 GByte - und noch eine Menge Zeit, um all die
Bits zu zählen :wink:.

Wie du auf 2^26 Bytes kommst ist mir schleierhaft. 2^31 Bytes hätte ich verstanden. Wenn man die „+3“ auch noch braucht, müssen es dann diese Bits auch noch mehr sein. 2^31 Bytes sollten 2 GByte entsprechen (2^26 Bytes sollten 2^6 MB = 64 MB sein).

vielen dank für eure schnellen Antworten. Könnt ihr mir noch erklären wie man darauf kommt? ich muss das sicherlich noch mit anderen Zahlen rechnen können.

hi plaicy,

Wie du auf 2^26 Bytes kommst ist mir schleierhaft. 2^31 Bytes
hätte ich verstanden. Wenn man die „+3“ auch noch braucht,
müssen es dann diese Bits auch noch mehr sein. 2^31 Bytes
sollten 2 GByte entsprechen (2^26 Bytes sollten 2^6 MB = 64 MB
sein).

okay ich hab ein bischen schnell gerechnet - wollte aber auch nur darstellen, dass es kein ‚Universalrezept‘ gibt. Mit 2^34 Bit kann ich Zahlen von 0 … 2^34 darstellen (in der Darstellung: ein gesetztes Bit bedeutet ‚die repräsentierte Zahl wird um eins groesser‘ - die +3 habe ich also vergessen). 2^34 Bit sind 2^(34-8) Bytes = 2^26 Bytes = 2^16 KB = 2^6 MB = 64 MB. Okay, du hast natürlich recht, so schnell schmeisst man 2er-Potenzen durcheinander.

gruss und schönes WE
bernhard

vielen dank für eure schnellen Antworten. Könnt ihr mir noch
erklären wie man darauf kommt? ich muss das sicherlich noch
mit anderen Zahlen rechnen können.

Eigentlich gar nicht richtig. Das ist pures Raten, da deine Aufgabenstellung nicht ganz eindeutig ist. Mindestens werden n Bits für eine Zahl von 0 bis 2^n-1 benötigt. Also reichen in deinem Fall (2^34+3) 34 Bits nicht und 35 Bit sind genug. Da Computer meistens 2-er-Potenzen von Bits verwenden werden wohl häufig 64 Bit verwendet (32 würden nicht ausreichen). Man kann das auch beliebig anders codieren und mehr Bits brauchen. Genauso wie man die Zahl 12 entweder mit zwei oder mit fünf Zeichen darstellen kann bzw. mit noch mehr, wenn man einen ganzen Satz daraus macht.

hi Bernhard,

2^34 Bit sind 2^(34-8) Bytes

Darauf wollte ich hinaus. Das stimmt nicht. Wenn man von 8 Bit pro Byte ausgeht, bedeutet dies, dass man die Anzahl der Bits durch 8 teilen muss, um die Bytes herauszubekommen. Also sind dies
(2^34)/8 = (2^34)/(2^3) = 2^(34-3) = 2^31.

Ist aber nicht wichtig. Bei Potenzen vertut man sich schnell mal.

(2^34)/8 ungefähr 2.1475e+09
 2^26 ungefähr 6.7109e+07
 2^31 ungefähr 2.1475e+09

hi plaicy,

Darauf wollte ich hinaus. Das stimmt nicht. Wenn man von 8
Bit pro Byte ausgeht, bedeutet dies, dass man die Anzahl der
Bits durch 8 teilen muss, um die Bytes herauszubekommen. Also
sind dies
(2^34)/8 = (2^34)/(2^3) = 2^(34-3) = 2^31.

shit, du hast schon wieder recht. Ich sag besser nichts mehr. *schaem*.

gruss
b.

Hallo!

ich hab folgendes Problem.
Ich hab hier eine Zahl 17179869187 ( 2^34 + 3) die im Computer
dargestellt werden soll.

Eine pauschale Antwort gibt es nicht, da es ganz davon abhängig ist, was Du damit machen willst. Darüber ergibt sich ggf. der logische Datentyp und in Abhängigkeit des „Computers“ die geeignete technische Abbildung. Beim logischen Datentyp kommt es halt drauf an, wie der Wertebereich für die Ablage und die Verarbeitung aussieht:
Ganzzahligkeit, Vorzeichen, (Fließkomma)genauigkeit, Rationale/Komplexe Zahlen, Vergleichsoperationen, Rechenoperationen usw.

Im Extremfall reicht ein Bit in einem eigenen Datentyp, der (nur) die Werte 0 oder 17179869187 annehmen kann.

Weiß jemand von euch wieviel MB und wieviel Mebibyte ich
dafürbenötige und wie man das berechnet?

Da liegst Du aber um Größenordnungen über dem Bedarf. Mehr als eine handvoll Bytes ist bei üblichen Abbildungen nicht notwendig. Rein theoretisch benötigt man nur die höchste Zweierpotenz plus eins in Bits und ein Bit extra für’s Vorzeichen. Für Zahlen kleiner 2^34 also 36 bits. Aber da Rechenbreiten von Computer-CPUs fast immer an Zweierpotenzen ausgerichtet sind, nimmt man gleich 64 Bit = 8 Byte.

Für Ganzzahlarithmetik auf einem Rechner mit 64-bit CPU-Arithmetik nimmt man eine 64 bit (8 Byte) Register/Speicherstelle. Will man nicht in Assembler codieren, sollte dann auch die Programmiersprache entsprechende Datentypen oder Bibliotheken mitbringen.

Lustig wird’s, wenn man mangels CPU-Arithmetik oder geeigneter Programmiersprache eine eigene Klasse samt Methoden codieren muss.

Geht es - wie bei ISBN oder Kontonummern nicht um Arithmetik, verwendet mal besser ASCII, was 1 Byte pro Stelle plus Endekennung/Längenzähler bedeutet.

Ciao, Allesquatsch