数値に代替パターンのビットがあるかどうかを確認します-C++で1を設定します
整数nがあるとしましょう。問題は、この整数が2進数に相当する代替パターンを持っているかどうかを確認することです。代替パターンは101010…を意味します。
アプローチは次のようなものです。同等の2進数を使用して各桁をチェックし、2つ連続している場合は偽を返し、そうでない場合は真を返します。
例
#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
-
C++でkセットビットの数を最大化するために必要な最小フリップ。
問題の説明 2つの数値nとkが与えられた場合、結果の数値が正確にkセットビットになるようにビットを反転することにより、指定された数値を最大化するために必要な最小の反転数を見つける必要があります。入力は、k
-
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