检查数字是否有交替模式的位 - 在 C++ 中设置为 1
c++server side programmingprogramming更新于 2024/9/23 0:15:00
假设我们有一个整数 n。问题是检查这个整数在其二进制等价物中是否有交替模式。交替模式意味着 101010….
方法如下:使用二进制等价物检查每个数字,如果两个连续的数字相同,则返回 false,否则返回 true。
示例
#include <iostream> using namespace std; bool hasAlternatePattern(unsigned int n) { int previous = n % 2; n = n/2; while (n > 0) { int current = n % 2; if (current == previous) // 如果当前位与前一个位相同 return false; previous = current; n = n / 2; } return true; } int main() { unsigned int number = 42; if(hasAlternatePattern(number)) cout << "Has alternating pattern"; else cout << "Has no alternating pattern"; }
输出
Has alternating pattern