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
Freigeben: 2023-09-07 14:01:02
nach vorne
545 Leute haben es durchsucht

打印在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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage