Computer >> Máy Tính >  >> Lập trình >> C ++

Vị trí của bit chung ngoài cùng bên phải trong hai số trong C ++


Trong bài toán này, chúng ta được cho hai số M và N. Nhiệm vụ của chúng ta là in ra vị trí (chỉ số) của bit chung ngoài cùng bên phải của hai số.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào - N =4, M =7

Đầu ra - 3

Giải thích - (4) 2 =100, (7) 2 =111. Bit chung ngoài cùng bên phải ở chỉ số 3.

Để giải quyết vấn đề này, chúng ta sẽ phải tìm tất cả các bit giống nhau của các số. Để tìm tất cả các bit giống nhau, chúng ta sẽ tìm xor của M và N. Sau đó, chúng ta sẽ tìm bit ngoài cùng bên phải trong phép phủ định của M ^ N..

Điều này có vẻ hơi phức tạp để hiểu, hãy giải quyết một ví dụ bằng phương pháp này.

N = 4 , M = 7
~N^M = 100.

Một bit đặt ngoài cùng bên phải ở đây là chỉ số 3.

Ví dụ

Chương trình cho thấy việc triển khai giải pháp của chúng tôi,

#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;
}

Đầu ra

Postiion of first right same bit of the number 4 & 7 is 3