Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตรวจสอบว่าตัวเลขมีบิตในรูปแบบอื่นหรือไม่ - ตั้งค่า 1 ใน C++


ให้เราพิจารณาว่าเรามีจำนวนเต็ม n ปัญหาคือต้องตรวจสอบว่าจำนวนเต็มนี้มีรูปแบบอื่นในรูปแบบไบนารีที่เทียบเท่าหรือไม่ รูปแบบอื่นหมายถึง 101010….

วิธีการมีลักษณะดังนี้:ตรวจสอบแต่ละหลักโดยใช้เลขฐานสองที่เท่ากัน และถ้าสองตัวติดกัน ให้คืนค่าเท็จ มิฉะนั้น จะเป็นจริง

ตัวอย่าง

#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) // If current bit is same as 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