Zahl in dual darstellen zweierkomplement?



  • bandchef schrieb:

    Dann hab ich das ja jetzt soweit richtig gemacht, oder?

    🤡

    Positive Zahlen sehen in beiden Fällen gleich aus, negative nicht.
    (Siehe lustigs Erklärung)



  • Ich fasse also mal zusammen:

    Das Zweierkomplement einer als positiv gegebenen Dezimalzahl (und natürlich in Dual umgerechnet) ist das gleiche wie die umgerechnete Dualzahl selbst.

    Wenn ich jetzt allerdings eine negativ Dezimalzahl gegeben habe die ich in Dual umrechnen soll, dann rechne ich diese um in dem ich die (äquivalente) positive Dezimalzahl nach Dual berechne und davon dann das Zweierkomplement mach. Sieht dann konrekt für -341 so aus:

    341:2=170 R1
    170:2=85  R0
    85:2=42   R1
    42:2=21   R0
    21:2=10   R1
    10:2=5    R0
    5:2=2     R1
    2:2=1     R0
    1:2=0     R1
    

    Es folgt dann als 10-Bit-Zahl 0101010101.

    Davon jetzt das Zweierkomplement:

    0101010101
      1010101010
    +          1
    ------------
      1010101011
    

    Nun hat ja hier schon mal jemand geschrieben, dass ich jetzt den Übertrag hinter dem höchstwertigsten Bit ignorieren soll. Was aber mache ich jetzt hier? Hier gibt es keinen Übertrag!



  • Ich würd jetzt nochmal gerne diese Beispielaufgabe durchmachen:

    Die Aufgabe war ja:

    Stellen sie 85 und -341 in 10 bits dar:
    
                  "Vorzeichen und Betrag"              "Zweierkomplement"
    85
    -341
    

    Ich berechne nun "Vorzeichen und Betrag" von 85:

    85:2=42 R1
    42:2=21 R0
    21:2=10 R1
    10:2=5  R0
    5:2=2   R1
    2:2=1   R0
    1:2=0   R1
    

    Als 10-Bit-Zahl folgt dann: 0001010101.

    Da hier nun eine pos. Zahl gegeben war, ist das Zweierkomplement gleich dem Berechneten "Vorzeichen und Betrag", nämlich: 0001010101.

    Soweit richtig?

    Ich berechne nun "Vorzeichen und Betrag" von -341:

    341:2=170 R1
    170:2=85  R0
    85:2=42   R1
    42:2=21   R0
    21:2=10   R1
    10:2=5    R0
    5:2=2     R1
    2:2=1     R0
    1:2=0     R1
    

    Als 10-Bit-Zahl folgt dann: 0101010101.

    Nun "Vorzeichen und Betrag":

    0101010101
    1101010101
    

    Warum darf man dann hier einfach das 10. Bit umdrehen? Ich weiß, dass 1 = "-" und 0 = "+" bedeutet.

    Nun Zweierkomplement:

    0101010101
      1010101010
    +          1
    ------------
      1010101011
    

    Und wie gehts jetzt weiter?



  • Wie mach ich das denn jetzt, wenn ich von -341 "Vorzeichen und Betrag" und das Zweierkomplement berechnen soll?

    341:16=21 R5
    21:16=1   R5
    1:16=0    R1
    

    Nun, jetzt hab ich +341 in Hex dargestellt. Wie bekomm ich nun aber -341 dargestellt? Im Dualsystem musste man ja anscheinend nur das höchstwertigste Bit umdrehen. Wie mach ich das jetzt im Hex-System?

    Wie berechne ich da jetzt das Zweierkomplement?



  • bandchef schrieb:

    Soweit richtig?

    Ja.

    Warum darf man dann hier einfach das 10. Bit umdrehen? Ich weiß, dass 1 = "-" und 0 = "+" bedeutet.

    Weil sign and magnitude genau so definiert ist. Im ersten Bit steht das Vorzeichen, in den restlichen der Betrag.

    Und wie gehts jetzt weiter?

    Du bist fertig.



  • Noch eine Frage:

    Wie viele Zahlen kann man mit 7 Bits darstellen, welche Zahlenbereiche kann man damit beschreiten und wie erfolgt dabei üblicherweise die Zuordnung Dezimal zu dual?

    - mit 7 Bits lassen sich 2^7=128 Zahlen darstellen

    Zahlenbereiche:

    ohne Vorzeichen: 0 - 127
    mit Vorzeichen bzw. Betrag: -63 - +64
    Zweierkomplement: 64 - -63

    Stimmt das so?



  • bandchef schrieb:

    ohne Vorzeichen: 0 - 127

    Richtig.

    mit Vorzeichen bzw. Betrag: -63 - +64

    Falsch. Bedenke, dass man bei Vorzeichen und Betrag zwischen -0 und +0 unterscheiden muss.

    Zweierkomplement: 64 - -63

    Ebenfalls falsch. Rechne mal aus. Was ist 1000000?



  • mit Vorzeichen bzw. Betrag: -63 - +64

    Wie kann ich mir das bildlich vorstellen?

    Die -0 entspricht dann also 1000000
    Die +0 entspricht dann also 0000000

    Der minimalste (negative) Wert ist dem zu Folge dann: 1 111111.
    Aber: 111111 entspricht doch aber 64 und nicht 63...?

    Der maximalste (positive) Wert ist dem zu Folge dann: 0 111111.
    Aber: 111111 entspricht doch aber 64 und nicht 63...?

    Kommt das nun daher, dass hier nicht Zahl der darstellbaren Ziffern gefragt ist, sondern der Wertebereich? Denn dann ist es klar, dass es nur bis 63 geht, weil ja noch die 0 in beiden Fälle dabei ist. Stimmt das so?

    Zweierkomplement: 64 - -63

    Wenn ich nun von 1000000 das Zweierkomplement bilde, dann sieht das ja so aus:

    1000000
      0111111
    +       1
    ---------
      1111111
    

    1111111 = 127

    Bei der Zweierkomplementdarstellung gibt es ja nur eine 0, oder?
    D.h., der Bereich lautet dann so: -64 - +63

    Mir ist das aber trotzdem noch nicht klar...



  • bandchef schrieb:

    Die -0 entspricht dann also 1000000
    Die +0 entspricht dann also 0000000

    Genau.

    Der minimalste (negative) Wert ist dem zu Folge dann: 1 111111.
    Aber: 111111 entspricht doch aber 64 und nicht 63...?

    Der maximalste (positive) Wert ist dem zu Folge dann: 0 111111.
    Aber: 111111 entspricht doch aber 64 und nicht 63...?

    111111 ist 63!

    Kommt das nun daher, dass hier nicht Zahl der darstellbaren Ziffern gefragt ist, sondern der Wertebereich? Denn dann ist es klar, dass es nur bis 63 geht, weil ja noch die 0 in beiden Fälle dabei ist. Stimmt das so?

    ja.

    Wenn ich nun von 1000000 das Zweierkomplement bilde, dann sieht das ja so aus:

    1000000
      0111111
    +       1
    ---------
      1111111
    

    1111111 = 127

    Rechne nochmal. Damit behauptest Du ja, dass -127 darstellbar ist.

    Bei der Zweierkomplementdarstellung gibt es ja nur eine 0, oder?
    D.h., der Bereich lautet dann so: -64 - +63

    Richtiges Ergebnis, aber keine Ahnung, wie Du da drauf gekommen bist.



  • Also, die Zweikomplementdarstellung sollte doch richtig berechnet sein, oder?

    1000000
      0111111
    +       1
    ---------
      1111111
    

    Wenn ich nun die Dezimalzahl ausrechne die dahinter steckt, dann sieht die so aus:

    26+25+24+23+22+21+2^0=127

    Ich komme somit wieder auf die gleiche Zahl...



  • 1+1=1?



  • Verdammt 😮

    1000000
    
      0111111
    +11111111
    ---------
     10000000
    

    10000000 = 128

    Gut, dann kommt jetzt nach der Zweikomplementbildung 128 raus. Aber weiter bringt mich das immer noch nicht!

    Wenn ich die 128 jetzt auf zwei "intervalle" aufteile, dann könnte ich ja sagen -64 - +64.

    Nun das ist vermutlich aber immer noch falsch, da die 0 die hier ebenfalls im "Intervall" liegt mir dann 129 Zahl ergeben würde.

    Wird die Null die ja dabei sein muss als positiv gezählt? Nur so könnte ich mir dann das Ergebnis von -64 - +63 vorstellen...



  • Schon wieder falsch gerechnet. Die ursprüngliche Zahl darfst Du natürlich NICHT mitaddieren.



  • 1000000   <- ursprüngliche Zahl
    
      0111111   <- ursprüngliche Zahl invertiert
    +       1   <- Addition von 1
      111111    <- Überträge
    ---------
      1000000   <- Ergebnis
    

    So stimmts aber jetzt...

    1000000 = 64

    Was bedeutet das jetzt?



  • Wo kommt denn der letzte Übertrag her?



  • Überschneidung der Antworten?



  • Wie deute ich jetzt das 64 bezüglich meiner Antwort für die Aufgabe?

    -64 - +63

    Woher weiß ich nun, dass man das Ergebnis des Zwiekomplements im Minusbereich "ganz" schreiben darf und ab dem Plusbereich die 0 dazu kommt und so deshalb nur bis 63 geht?

    Zitat von lustig:

    Es gibt einen Unterschied von "85 im Zweierkomplement darstellen" und "das Zweierkomplement von 85 berechnen".

    Kann mir das einer mal erklären? Ich meine den Unterschied von "85 im Zweierkomplement darstellen" und "das Zweierkomplement von 85 berechnen".

    Wenn ich das Zweikomplement von +85 berechne, hab ich dann die Darstellung von -85 durch das Zweikomplement?



  • Tze, tze, einfach editieren, nachdem ich schon geantwortet hab ^^

    bandchef schrieb:

    Wie deute ich jetzt das 64 bezüglich meiner Antwort für die Aufgabe?

    1000000 = -64 ist die kleinste Zahl (im Zweierkomplement). 0111111 = 63 die größte

    -64 - +63

    Woher weiß ich nun, dass man das Ergebnis des Zwiekomplements im Minusbereich "ganz" schreiben darf und ab dem Plusbereich die 0 dazu kommt und so deshalb nur bis 63 geht?

    0000000 = 0 hat das oberste Bit nicht gesetzt, gehört also sozusagen zu den positiven (besser: nicht-negativen) Zahlen.

    Zitat von lustig:

    Es gibt einen Unterschied von "85 im Zweierkomplement darstellen" und "das Zweierkomplement von 85 berechnen".

    Kann mir das einer mal erklären? Ich meine den Unterschied von "85 im Zweierkomplement darstellen" und "das Zweierkomplement von 85 berechnen".

    Das Zweierkomplement berechnen heisst: Jedes Bit invertieren und 1 addieren.

    Im Zweierkomplement darstellen heisst: Wenn die Zahl negativ ist das Zweierkomplement des Betrags bilden, ansonsten die Zahl so lassen, wie sie ist.

    Wenn ich das Zweikomplement von +85 berechne, hab ich dann die Darstellung von -85 durch das Zweikomplement?

    Genau.



  • 1000000 = -64 ist die kleinste Zahl (im Zweierkomplement). 0111111 = 63 die größte

    Diese 1000000 = -64 entspricht ja rechnerisch 2^6=64. Ist hier also quasi da höchstwertigste Bit das Vorzeichen und zugleich das zu berechnende Bit. Ich kann das grad nicht so dolle Ausdrücken, aber ich denke du weißt was ich meine, oder?

    Bei 0111111 = 63 ist das höchstwertigste Bit wieder das Vorzeichen (hier ja ein 0 und somit +) und dieses höchstwertigste Bit zählt aber nicht als zu "berechnende Stelle" weils ja 0 ist und eine 0 bei der Berechnung keine Auswirkung hätte.

    Stimmt doch soweit, oder?



  • Ich denke du solltest das Problem anders betrachten (ich verstehe nicht so ganz was du meinst mit "berechnende Stelle" und Bits die nicht zählen).

    Für den Wertebereich suchst du einfach die grösste und die kleinste Zahl die du mit 7 Bits darstellen kannst. Schreib dir mal alle Zahlen für z.B. 4 Bits auf, dann verstehst du sicher einfacher wie das Zweierkomplement funktioniert.

    Beim Zweierkomplement ist bei positiven Zahlen (und bei 0) das MSB immer 0. Positive Zahlen werden "ganz normal" dargestellt, so wie du es ja auch im Beispiel berechnet hast. Also ist die grösste Zahl 0 [Vorzeichen] 111111[Grösste Zahl mit den verbleibenden 6 Bit]. Also ist 0111111=63 die grösste Zahl.
    Dann musst du dir noch überlegen, wie die kleinste Zahl aussieht. Die Lösung wurde ja schon gegeben (1000000=-64).


Anmelden zum Antworten