Computerarithmetik

Was ergibt sich, wenn −8 (1111 1000) als vorzeichenbehaftete 8-Bit-Ganzzahl mit arithmetischem Rechtsshift um 1 Bit nach rechts geschoben wird?

  1. A124 (0111 1100)
  2. B−16 (1111 0000)
  3. C−4 (1111 1100)
Antwort und Erläuterung anzeigen

Antwort: C. −4 (1111 1100)

Beim arithmetischen Rechtsshift wird das Vorzeichenbit in das frei werdende höchste Bit kopiert, sodass aus 1111 1000 die Folge 1111 1100 wird, im Zweierkomplement −4. Auch bei negativen Zahlen entspricht eine Verschiebung um 1 Bit nach rechts der Division durch 2. Beim logischen Rechtsshift, der oben eine 0 einfügt, ergäbe sich 0111 1100 = 124, und das Vorzeichen änderte sich. −16 wäre das Ergebnis einer Verschiebung um 1 Bit nach links. Zu beachten ist, dass es in C der Implementierung überlassen war, welches Verhalten ein Rechtsshift vorzeichenbehafteter Ganzzahlen hat.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Computerarithmetik

  1. In C: Welche Kombination der Ergebnisse von −7 / 2 und −7 >> 1 (bei arithmetischem Rechtsshift) für int ist korrekt?
  2. In C: Was ergibt 0 − 1 bei einer 32-Bit-Ganzzahl ohne Vorzeichen (unsigned int)?
  3. Wie lässt sich bei der Addition vorzeichenloser Ganzzahlen feststellen, dass das Ergebnis den darstellbaren Bereich überschritten hat (Überlauf)?
  4. Welche Aussage zum Abstand benachbarter darstellbarer Werte bei Gleitkommazahlen ist korrekt?
  5. Bis zu welcher Obergrenze lassen sich bei einfacher Genauigkeit nach IEEE 754 ab 0 alle ganzen Zahlen exakt darstellen?