在 C++ 中列印一個數字 N 的位元 AND 集合
此問題中,我們需要列印一個數字 n 的位元 AND 集的 0 到 n 之間的數字。
我們透過示例理解該概念。
Input : N = 4. Output : 0 4 Explanation : 0 & 4 = 0 1 & 4 = 0 2 & 4 = 0 3 & 4 = 0 4 & 4 = 4. Input : N = 6 Output : 0, 2, 4, 6
為了解決此問題,我們需要使用位元運算子。使用它們,我們將找到所需的子集。我們將從 n 到 1 使用一種不同的更新函式向後進行迭代,該函式僅使用返回 AND 運算結果的值以及 n 的若干 AND 操作。該運算將為 i = (i-1) & N。
基於此理念,讓我們建立一個演算法 −
演算法
Step 1 : Loop from n to 1 using decrement operator i = (i-1) & n Step 2 : PRINT i. Step 3 : EXIT.
示例
以上演算法的程式實現 −
#include <iostream>
using namespace std;
int main() {
int n = 11;
for (int i = n; i > 0; i = (i - 1) & n)
cout << i << " ";
cout << 0;
return 0;
}輸出
11 10 9 8 3 2 1 0
廣告
資料結構
Networking
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP