1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Gleitkommazahlen/Umwandlung

Discussion in 'Software allgemein' started by matzethebrain, Jan 29, 2012.

Thread Status:
Not open for further replies.
  1. Hallo! Ich schreibe bald meine Informatik-Grundlagen Klausur! Und mir macht eine Aufgabe Probleme.... ist mit Sicherheit auch nicht das richtige Forum, aber ich versuche es mal hier.

    Die Aufgabe:
    Stellen Sie -0.15 als normalisierte gleitkommazahl im 2er komplement mit 6bit mantisse und 4bit exponent dar.

    Ich habe nun so angefangen:

    -0.15 = -0.15 * 2^0
    -0.30 = -0.15 * 2^1
    -0.60 = -0.15 * 2^2

    Daraus ergibt sich der Exponent, welcher 2^2 ist. ( Mein Gedankengang: 4bit Exponent, einer für das Vorzeichen, also muss ich diesen Vorgang 3 mal machen um den Exponenten zu erfahren ).

    Nun brauche ich noch 5 Stellen der Mantisse, da ja wieder 1Bit für das Vorzeichen wegfällt.

    Ich fange dann mit 0,6 an, weil ich oben damit aufgehört hatte.

    0,6 * 2 = 1,2 also eine 1
    0,2 * 2 = 0,4 also eine 0
    0,4 * 2 = 0,8 also eine 0
    0,8 * 2 = 1,6 also eine 1
    0,6 * 2 = 1,2 also eine 1

    Nun habe ich ja meine 5Bits.

    Ich würde nun auf Mantisse: 111001 und Exponent 1010 kommen.

    Allerdings sagt mir die Lösung: 110011 1110

    Kann mir jemand sagen, was ich falsch mache? Und wie man aus 1110 die Zahl -2 liest?

    Dankeschön!!!!
     
  2. kazhar

    kazhar Viertel Gigabyte

    du hast das "falsche" datenformat für negative zahlen verwendet.

    um die negative entsprechung einer positive zahl zu erhalten invertiert man erst das bitfeld und addiert dann 1.

    also 2 -> 0010 -> 1101 -> 1101 + 0001 = 1110
     
  3. oh okay - sehr vielen dank! das ist dann aber nur bei dem 2er komplement??

    und hast du zufällig auch eine ahnung wieso meine mantisse falsch ist?

    mfg
     
  4. kazhar

    kazhar Viertel Gigabyte

    da bin ich noch am rätseln.

    wenn ich mir das ergebnis ansehe, dann ist deine bitreihenfolge falsch:

    110011
    das rote wäre dann das vorzeichen. allerdings ist das dann nicht das korrekte negative zahlenformat....
     
  5. 0,6 * 2 = 1,2 also eine 1
    0,2 * 2 = 0,4 also eine 0
    0,4 * 2 = 0,8 also eine 0
    0,8 * 2 = 1,6 also eine 1
    0,6 * 2 = 1,2 also eine 1


    das war ja mein ansatz: fängt man dort evtl. von oben an? also 10011 und das vorzeichen 1, wäre dann ja 110011 und würde passen. aber eigentlich dachte ich man fängt von unten an?!
     
  6. kazhar

    kazhar Viertel Gigabyte

    das msb ist immer links, das lsb immer rechts ;)
     

  7. ehh sorry msb? lsb? :eek:
     
  8. kazhar

    kazhar Viertel Gigabyte

    msb ... most significant bit ... "wichtigste" stelle
    lsb ... least significant bit ... "unwichtigste" stelle

    ist wie bei zahlen: die niederwertigste stelle (=einer stelle) ist ganz rechts, die hunderter (tausender,...) stelle ist links.
    bei kommazahlen werden die werte der stellen nach rechts auch immer kleiner (zehntel, hundertstel,...)

    in deinem bespiel hättest du die 0,15 als 51,0 geschrieben...
     
  9. aber die vorgegebene lösung ist doch auch
    110011 1110

    wäre doch dann das gleiche mit 51?! :O
     
  10. kazhar

    kazhar Viertel Gigabyte

    wieso?

    vorzeichen = msb, 1/2, 1/4, 1/8, 1/16, 1/32 = lsb
     
  11. ich glaube ich habe es!

    ich habe es nun so mal gemacht:

    0:2 = 0
    0:2 = 0

    also erstmal für die Zahl vor dem Komma 0, also weglassen.
    Dann habe ich
    -0,15 *2 = -0,30 = 0
    -0,30*2 = -0,60 = 0
    -0,60*2= -1,20 = 1
    -0,20*2 = -0,40 = 0
    -0,40*2 = -0,80 = 0
    -0,80*2 = -1,60 = 1
    0,60*2 = -1,20 = 1

    dann gelassen weil es sich ja ab dort wiederholt...

    nun ist ja 0010011 das Ergebnis
    0010011 = 2^0
    10011 = 2^-2
    nun noch das Vorzeichen und es ist 110011.

    Der Exponent ist also -2. also 2 in binär 0010, dann umdrehen 1101 und dann 1 addieren und ich bin bei 1110.

    Ergebnis 110011 1110 - so wie es vorgegeben ist.

    Ist das wohl korrekt so?
     
  12. Hascheff

    Hascheff Moderator

    :schieb:
    Hallo matzethebrain,
    kazhar hat ja schon alles erklärt. Aber man sieht an dem Beispiel sehr schön den Unterschied zwischen Auswendiglernen und Verstehen. Du musst dir nur im Klaren sein, was 0,1 dual bedeutet. Und diese 1 bekommst du mit dem Algorithmus automatisch, wenn die Dezimalzahl mindestens 0,5 ist.

    Gruß
    Hascheff
     
Thread Status:
Not open for further replies.

Share This Page