檢查數字是否在 C++ 中有兩個相鄰的設定為 1 的位。


我們將在此看到,如果一個數字在其二進位制表示形式中有相鄰的設定位。假設數字 12 有兩個連續的 1(12 = 1100)。

若要檢查這種型別的數字,這個想法非常簡單。我們將數字移位 1 位,然後進行位與運算。如果位與運算的結果不為零,則必須有一些連續的 1。

示例

 線上演示

#include <iostream>
using namespace std;
bool hasConsecutiveOnes(int n) {
   if((n & (n >> 1)) == 1){
   return true;
   }else{
      return false;
   }
}
int main() {
   int num = 67; //1000011
   if(hasConsecutiveOnes(num)){
      cout << "Has Consecutive 1s";
   }else{
      cout << "Has No Consecutive 1s";
   }
}

輸出

Has Consecutive 1s

更新於:2019-09-27

479 次瀏覽

Kickstart 您的職業生涯

完成課程獲得認證

開始
廣告