让我们考虑我们有一个整数 n。问题是检查此整数的二进制等价物中是否具有交替模式。交替模式意味着 101010…。方法如下:计算 num = n XOR (n >> 1),现在如果 num 的所有位都是 1,则 num 具有交替模式。示例 实时演示#include #include using namespace std; bool isAllBitSet(int n){ if (((n + 1) & n) == 0) return true; return false; } bool hasAlternatePattern(unsigned int n) { unsigned int num = n ^ (n >> 1); return isAllBitSet(num); } int main() { unsigned int number = 42; if(hasAlternatePattern(number)) cout
让我们考虑我们有一个整数 n。问题是检查此整数的二进制等价物中是否具有交替模式。交替模式意味着 101010…。方法如下:使用二进制等价物检查每个数字,如果两个连续数字相同,则返回 false,否则返回 true。示例#include 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