Heim >Backend-Entwicklung >C++ >Drucken Sie die Schritte zum Generieren einer Zahl der Form 2^X - 1 in einem C-Programm aus

Drucken Sie die Schritte zum Generieren einer Zahl der Form 2^X - 1 in einem C-Programm aus

WBOY
WBOYnach vorne
2023-09-07 14:01:02548Durchsuche

打印在C程序中生成形如2^X - 1的数字的步骤

Gegeben eine Zahl n, müssen wir die XOR-Operation verwenden, um die Schritte auszugeben, um die Zahl in die Form 2^X-1 zu bringen.

  • Wir sollten alle 2^M-1-Zahlen, bei denen M von Ihnen ausgewählt wird, in ungeraden Schritten XOR-verknüpfen.
  • Erhöhen Sie in gleichmäßigen Schritten die Zahl um 1

. KONTING DER STREAT, bis n n 2^x-1 wird und alle Schritte drucken

Example

Input: 22
Output:
   Step 1 : Xor with 15
   Step 2: Increase by 1
   Step 3 : Xor with 7
   Step 4: Increase by 1
   Step 5 : Xor with 1
Input:7
Output: No Steps to be performed

algorithmus Wenn Sie das obige Programm ausführen, wird die folgende Ausgabe generiert:

int find_leftmost_unsetbit(int n)
START
STEP 1 : DECLARE AND ASSIGN ind = -1, i = 1
STEP 2 : LOOP WHILE n
   IF !(n & 1) THEN,
      ASSIGN ind WITH i
   END IF
   INCREMENT i BY 1
   LEFT SHIFT n BY 1
END WHILe
STEP 3 : RETURN ind
STOP
void perform_steps(int n)
START
STEP 1 : DECLARE AND ASSIGN left = find_leftmost_unsetbit(n)
STEP 2 : IF left == -1 THEN,
   PRINT "No Steps to be performed"
   RETURN
END IF
STEP 3 : DECLARE AND ASSIGN step = 1
STEP 4 : LOOP WHILE find_leftmost_unsetbit(n) != -1
   IF step % 2 == 0 THEN,
      INCREMENT n BY 1
      PRINT "Step n : Increase by 1</p><p>"
   ELSE
      DECLARE AND ASSIGN m =
      find_leftmost_unsetbit(n)
      AND SET num = (pow(2, m) - 1)
      SET n = n ^ num
      PRINT "Step N : Xor with Num
   END IF
   INCREMENT step BY 1
END LOOP
STOP

Das obige ist der detaillierte Inhalt vonDrucken Sie die Schritte zum Generieren einer Zahl der Form 2^X - 1 in einem C-Programm aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen