C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で数値に2つの隣接するセットビットがあるかどうかを確認します


ここでは、数値のバイナリ表現に隣接するセットビットがあるかどうかを確認します。数値12に2つの連続した1があるとします(12 =1100)。

このタイプの番号を確認するためのアイデアは非常に簡単です。数値を1ビットシフトしてから、ビット単位のANDを実行します。ビット単位のANDの結果がゼロ以外の場合、連続する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

  1. 2つの行列の乗算可能性をチェックするC++プログラム

    2つの行列は、乗算できる場合は乗算可能であると言われます。これは、最初の行列の列数が2番目の行列の行数と等しい場合にのみ可能です。たとえば。 Number of rows in Matrix 1 = 3 Number of columns in Matrix 1 = 2 Number of rows in Matrix 2 = 2 Number of columns in Matrix 2 = 5 Matrix 1 and Matrix 2 are multiplicable as the number of columns of Matrix 1 is equal to the numb

  2. Pythonで、数値のビットに連続したセットビットの数が昇順で含まれているかどうかを確認します

    正の数nがあるとすると、与えられた数nのビットパターンで、連続する1の数が左から右に増加しているかどうかを確認する必要があります。 したがって、入力がn =1775の場合、nのバイナリ表現は11011101111であるため、出力はTrueになります。したがって、連続する1の数は[2、3、4]であり、増加しています。 これを解決するには、次の手順に従います- bits_pattern:=nのビットの新しいリスト bit_count:=bits_patternのサイズ p_cnt:=0、c_cnt:=0 i:=0 i