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

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

  1. 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. 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