Zahl in dual darstellen zweierkomplement?



  • Hi Leute!

    Folgende Frage:

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

    Ich mein 85 in 10 Bits darzustellen ist ja nicht schwer:

    85:2=42R1
    85:2=...

    85 = 0001010101

    Das sollte doch nun auch schon Vorzeichen und Betrag darstellen, oder? Höchstwertigstes Bit ist das Vorzeichen. Vorzeichen = 0 -> + -> Betrag.

    Zweierkomplement von 85 in Dual lautet ja: invertieren 2 addieren. Das sieht dann so aus: 1110101011. Somit hätte ich für 85 auch schon das Zweierkomplement.

    Wie aber geht das jetzt alles für -341?

    Ich nehme jetzt einfach die +341 und mach wieder :2 das ergibt dann: 0101010101. Ist das dann jetzt "Vorzeichen und Betrag"? Wenn ich da jetzt wieder Zweierkomplement mach hab ich doch -341, oder? Sieht so aus: 1010101011



  • Bei der Frage gehts darum, wie man ein Vorzeichen für Integerzahlen repräsentieren kann.

    Version 1: Vorzeichenbit: Ein Bit (normalerweise das erste) gibt das Vorzeichen an, normalerweise 0 für + und 1 für - Das ist einfach zu verstehen, aber man kann nicht so gut damit rechnen. Ausserdem gibt es eine +0 und eine -0.

    Version 2: Zweierkomplement: Nimm die positive Zahl, drehe alle Bits um (1->0 und 0->1) und addiere eine 1 und ignoriere den Übertrag hinter dem höchsten Bit --> dann bekommst du die negative Zahl



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



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

    85 ist im Zweierkomplement auch 0001010101 (nicht nachgerechnet), schliesslich ist es positiv und du musst nichts spezielles beachten.
    Wenn du die Zweierkomplement Darstellung von -85 berechnen willst, musst du so vorgehen wie beschrieben (abgesehn davon dass "invertieren und 2 addieren" nicht ganz stimmt). Das was dann rauskommt ist die Zweierkomplement Darstellung von -85.

    Für -341 kannst du selber rechnen ;).



  • Sorry, aber ich hab das nicht verstanden.

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

    85 ist im Zweierkomplement auch 0001010101 (nicht nachgerechnet), schliesslich ist es positiv und du musst nichts spezielles beachten.
    Wenn du die Zweierkomplement Darstellung von -85 berechnen willst, musst du so vorgehen wie beschrieben (abgesehn davon dass "invertieren und 2 addieren" nicht ganz stimmt). Das was dann rauskommt ist die Zweierkomplement Darstellung von -85.



  • 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?


Anmelden zum Antworten