Grundlagen der Programmierung (Pseudocode nachverfolgen)

∧ ist das bitweise UND. Welchen Wert hat c, nachdem das folgende Programm ausgeführt wurde?

integer: x ← 200, c ← 0
while (x ≠ 0)
  x ← x ∧ (x − 1)
  c ← c + 1
endwhile
  1. A3
  2. B5
  3. C8
Antwort und Erläuterung anzeigen

Antwort: A. 3

Die Bitoperation x ∧ (x − 1) löscht das niedrigste 1-Bit von x. In x − 1 wird die niedrigste 1 zu 0, und alle Nullen darunter werden zu 1; das UND löscht daher genau diesen Teil. 200 = 11001000 wird zu 11000000 = 192, dann zu 10000000 = 128 und dann zu 0; die Schleife läuft also 3-mal. c ist am Ende die Zahl der 1-Bits in der Binärdarstellung von x.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Programmierung (Pseudocode nachverfolgen)

  1. x und y sind vorzeichenlose 8-Bit-Ganzzahlen. << und >> sind logische Verschiebungen: Frei werdende Bits werden mit 0 gefüllt, und Bits, die aus den 8 Bit hinausgeschoben werden, werden verworfen. ∨ ist das bitweise ODER. Welchen Wert hat y bei x = 75 nach der folgenden Zuweisung?
  2. Die folgende Prozedur bubble ist ein Bubblesort, der das ganzzahlige Array data aufsteigend sortiert. swap(data, j, k) ist eine Prozedur, die die Werte von data[j] und data[k] vertauscht. Die Array-Indizes beginnen bei 1. Was gehört an die Stelle von 【a】 im Programm?
  3. ÷ ist die Division; wird das Ergebnis einer ganzzahligen Variablen (auch einem Funktionsargument) zugewiesen, wird der Nachkommaanteil abgeschnitten. Das folgende Programm ermittelt in lo den Index des ersten Werts, der mindestens x ist, im aufsteigend sortierten ganzzahligen Array data (die Indizes beginnen bei 1). x ist nicht größer als das letzte Element von data. Was gehört an die Stelle von 【a】 im Programm?
  4. Ein Stack wird durch das ganzzahlige Array st mit 5 Elementen und die ganzzahlige Variable top dargestellt. Alle Elemente von st sind anfangs 0, und top beginnt bei 0. push(v) addiert 1 zu top und führt dann st[top] ← v aus; pop() gibt den Wert von st[top] zurück und subtrahiert dann 1 von top (die Elemente von st werden nicht verändert). Welche Werte haben top und st, nachdem das folgende Programm ausgeführt wurde?
  5. Eine Warteschlange verwendet das Zeichenketten-Array q mit 4 Elementen als Ring. head und tail beginnen bei 1. enq(v) führt q[tail] ← v und dann tail ← tail mod 4 + 1 aus; deq() gibt den Wert von q[head] zurück und führt dann head ← head mod 4 + 1 aus. In welchem Element von q wird „E“ gespeichert, wenn das folgende Programm ausgeführt wird?