Grundlagen der Programmierung

  • Die Zahl 2^134+3 soll im Computer als ganze Zahl dargestellt werden. Wie viele Kilobyte und wie viele Kibibyte werden mindestens benötigt:

    Ansatz:

    Mit n bits können 2^n Werte dargestellt werden.

    und: müssen k Werte dargestellt werden, benötigt man n=log2(k) Bits (also nicht log*2 sondern log zur Basis 2, die 2 ist tiefergestellt)

    die Zahl ist also "ausgeschrieben" 2.17780715 × 10^40 +3

    Wieviele "Werte" muss ich nun also darstellen, was ist mein k? diese Zahl: (2.17780715 × 10^40 +3) ?

    [CENTER][/CENTER]
    [CENTER][/CENTER]

  • Erstens hat das wenig mit Programmierung und viel mit Mathe zu tun.
    Und zweitens ist keine Antwort innerhalb von 24h ja nun echt nicht so verwunderlich bei der Frequenz der Besuche hier.

    Warum gibst du deine Lösung nicht hier zum Besten? Dann kann zumindest der nächste was davon lernen. ;)

  • Also Antwort: Man benötigt 135 Bit, das kann jeder selbst umrechnen.

    Aaaaber, da ich ja jetzt deine Aufmerksamkeit erregt habe, Toby, und du von der Materie Ahnung hast hab ich noch eine Frage:

    Bzw. eine Aufgabe:

    41D90000 und C6523900 sind IEEE 754 32 Bit Zahlen als Hexadezimalfolgen. Berechnen Sie das Produkt der Zahlen und geben sie dieses als neue Fließkommazahl (dargestellt durch Bitfolge, Einer Folge zur Basis 4 und Hexadezimalfolge) an. Falls das Ergebnis nicht exakt als Fließkommazahl dargestellt werden kann, geben Sie den Fehler als Dezimalzahl an.

    Ich hab die beiden Zahlen in Dezimalzahlen umgerchnet und das Produkt gebildet, 3,67[..] *e^18

    Das könnte ich jetzt natürlich als Binärzahl darstellen, die hätte jedoch vielzuviele Stellen für 32 bit (oder?) und zweitens soll ich das doch garnicht, oder? Ich hab Probleme mit dem Teil (dargestellt durch Bitfolge, Einer Folge zur Basis 4 und Hexadezimalfolge) weil alle IEEE 754 Systeme immer zur Basis 2 waren. Auch mit "als Bitdarstellung" heißt das, dass da nur 1 und 0 stehen dürfen? Quasi zur Basis 4 wäre beispielsweise 1 1 = 5 ?

    [CENTER][/CENTER]
    [CENTER][/CENTER]

  • Hä?
    Zu IEEE 754 muss ich selber nachsehen.
    Aber warum sollte eine Binärzahl auf 32 Bit begrenzt sein und was hat 32 Bit überhaupt mit Binärzahlen zu tun?
    32 Bit ist eine Menge von Binärzahlen, ja, aber prinzipiell kann jede Binärzahl so lang sein wie man will (im mathematischen Bereich, technisch sieht das wieder anders aus).
    Da steht schon, das du das als Bitfolge darstellen sollst, dann einmal zur Basis 4 (kann man aus der Bitfolge ohne groß zu rechnen ableiten) und einmal zur Basis 16 (Hex, kann man auch ableiten).

    1001 => 10 01 => 21 in Basis 4
    1001 => 1 001 => 11 in Basis 8
    1001 => 9 in Basis 16

    Der Trick dabei ist, die Binärzahl in entsprechende Häppchen zu zerteilen. Beim 4er sind es 2er-Pärchen, beim 8er 3er, beim 16 4er, usw.
    Diese Binärzahl dann eben in Dezimal umrechnen und es passt für das gewählte Zahlensystem (10 => 2, 01 => 1 == 21).

  • Dass das ganze auf 32 Bit begrenzt ist geht aus der Aufgabe hervor. Bitfolge heißt, dass es nur 1 und 0 en sein dürfen, oder?
    Natürlich kann eine Binärzahl unbegrenzt lang sein, soll sie hier aber garnicht.

    Wie kommst du auf

    1001 => 10 01 => 21 in Basis 4 -> Weder 1*2^0 + 0*2^1 + 0*2^2 + 1*2^3 noch 1*4^0 + 0*4^1 + 0*4^2 + 1*4^3 = 21
    1001 => 1 001 => 11 in Basis 8
    1001 => 9 in Basis 16

    Bei den anderen auch nicht. Ich versteh also deine Art der Umrechnung nicht. Mein Problem ist nicht das Umgehen mit IEEE 754, sondern, dass ich mit der Formulierung etwas zur Basis ≠ 2 in der Darstellung als Bitfolge Verständnisprobleme hab, da man doch eigentlich nichts anderes als Binärzahlen, also Dinge zur Basis 2 als 1 und 0 darstellt.
    Lach mich nicht aus.

    [CENTER][/CENTER]
    [CENTER][/CENTER]

  • Ich verstehe dein Problem nicht ganz?
    Und zu dem Beispiel: Ich zeige dir nur, wie man aus Binärzahlen ganz einfach Basis 4,8,16,32 machen kann.
    Das sind alles Vielfache von 2!
    Daher, zwei Binärzahlen geben eine Zahl im 4er, 3 Binärzahlen geben eine im 8er, 4 Binärzahlen geben eine im 16er.

    So wird dann aus 1001 Binär (was 9 ist) eben 21 im 4er (2 * 4^1 + 1 * 4^0) oder 11 im achter (1*8 + 1*1). Einfach die Binärzahl von rechts nach links in entsprechende Häppchen zerlegen und daraus dann eben Zahlen machen wie normal. Zwei Stellen Binär können auch nicht mehr als 3 darstellen, was die höchste Zahl im 4er System ist.

    So, grad mein Wissen wieder aufgefrischt, peinlich, IEEE 754 hatte ich in der Klausur und da wusste ich es noch. :D

    Lösung der Aufgabe ist simpel:
    Wandle beide Hex-Zahlen in Binär um, mach daraus dann die Dezimalzahl, addiere beide, mache daraus wieder eine Binärzahl und aus der kannst du dann eben einfach 4er, 8er und 16er machen.
    Vermutlich wird die Zahl nicht ganz reinpassen, aber das steht da ja, den Rest musst du eben ausgeben. Was dann auch schön zeigt, wie ungenau Computer werden wenn es um Gleitkommazahlen geht und warum das auch ein Kriterium ist über die Qualität von Prozessoren.


  • Lösung der Aufgabe ist simpel:
    Wandle beide Hex-Zahlen in Binär um, mach daraus dann die Dezimalzahl, addiere beide, mache daraus wieder eine Binärzahl und aus der kannst du dann eben einfach 4er, 8er und 16er machen.
    Vermutlich wird die Zahl nicht ganz reinpassen, aber das steht da ja, den Rest musst du eben ausgeben.

    Wieso mach ich aus der Hex Zahl nicht direkt ne Dezizahl? also hab ich jetzt gemacht. Ich soll die multiplizieren, hab ich auch gemacht. das ist aber ne riesige Zahl iwas *e^18 ^^ das ist also auch ne große, bzw. ne noch viel größere Binärzahl. Die von Hand auszurechnen, dauert ewig, bevor ich das also mach, frag ich dich, ob das richtig ist.

    edit 2123123123123: OK -___ - ich lad die dateien nochmal hoch, damit ihr nicht meine Identitär herausfindet 8|

    Aufgabenzettel

    Scheinaufgabe 1

    Scheinaufgabe 2

    [CENTER][/CENTER]
    [CENTER][/CENTER]

    4 Mal editiert, zuletzt von Salafur Eisenfaust (11. November 2010 um 22:35)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!