C++での2つの数値の右端の共通ビットの位置
この問題では、2つの数値MとNが与えられます。私たちのタスクは、2つの数値の右端の共通ビットの位置(インデックス)を出力することです。
問題を理解するために例を見てみましょう
入力 − n =4、M =7
出力 − 3
説明 −(4)2 =100、(7)2=111。右端の共通ビットはインデックス3にあります。
この問題を解決するには、数字の同じビットをすべて見つける必要があります。すべて同じビットを見つけるために、MとNのxorを見つけます。次に、M^Nの否定の右端のビットを見つけます。
これを理解するには少し複雑に思えます。この方法を使用して例を解いてみましょう。
N = 4 , M = 7 ~N^M = 100.
ここで右端のセットビットはインデックス3にあります。
例
ソリューションの実装を示すプログラム
#include <iostream> #include <math.h> using namespace std; int rightSetBit(int N) { int bitIndex = log2(N & -N)+1; return bitIndex; } void rightSameBit(int m, int n) { int diffBit = rightSetBit(~(m^n)); cout<<diffBit; } int main() { int N = 4, M = 7; cout<<"Postiion of first right same bit of the number "<<N<<" & "<<M<<" is "; rightSameBit(N, M); return 0; }
出力
Postiion of first right same bit of the number 4 & 7 is 3
-
2つの数値を交換するC++プログラム
2つの数値を交換するプログラムを作成する方法は2つあります。 1つは一時変数を使用することを含み、2番目の方法は3番目の変数を使用しません。これらは次のように詳細に説明されています- 一時変数を使用して2つの数値を交換するプログラム 一時変数を使用して2つの数値を交換するプログラムは次のとおりです。 例 #include <iostream > using namespace std; int main() { int a = 10, b = 5, temp; temp = a; a = b; &nbs
-
2つの数値を追加するC++プログラム
加算は基本的な算術演算です。 2つの数値を加算するプログラムは、2つの数値の加算を実行し、それらの合計を画面に出力します。 2つの数字の加算を示すプログラムは次のとおりです- 例 #include <iostream> using namespace std; int main() { int num1=15 ,num2=10, sum; sum = num1 + num2; cout<<"Sum of "<<num1<<" and &q