Zweierkomplement?
Ich möchte die Dezimalzahl 10 im Zweierkomplement darstellen.
Mein Ansatz wäre 0000 1010.
Bin mir allerdings nicht sicher, da ja eigentlich nur negative Zahlen auf 1 anfangen.
2 Antworten
Du hast das "Fangen mit 1 an" nicht richtig verstanden. Du rechnest das Zweierkomplement immer für eine bestimmte Breite aus, also z.B. 8 Bit. und bei 10 in 8 bit ist das erste (höchstwertige) Bit 0. -10 wäre da 11110110 bei 8 Bit Breite oder 1111 1111 1111 0110 bei 16 Bit.
Korrekt.
Anders ausgedrückt, das "Signed Bit", also das Vorzeichenbit ist immer das MSB (Most Significant Bit), kein beliebiges.
Das Signed Bit wird auch bei Vergleichen verwendet. Wenn man A und B vergleichen will, rechnet man einfach A-B. Dann bekommt man:
- A = B wenn 0 (Zero Flag im Prozessor an)
- A < B wenn das Signed Bit an ist
- A > B Wenn Zero Flag und Signed Bit aus sind
Das Signed Bit lässt sich mit einem Roll Befehl leicht ins Carry (Überlauf Bit) schieben. Und Sprungbefehle können durch Carry oder Zero-Flag gesteuert werden.
Richtig. Zweierkomplement bei binärer Darstellung wird erst mit negativen Zahlen relevant. Invertiere alle bits, dann addiere 1, dann hat du negiert mit Zweierkomplementdarstellung.