Zweierkomplement?

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.


Commodore64  10.10.2023, 00:09

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.

0

Richtig. Zweierkomplement bei binärer Darstellung wird erst mit negativen Zahlen relevant. Invertiere alle bits, dann addiere 1, dann hat du negiert mit Zweierkomplementdarstellung.