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

Vị trí của bit khác ngoài cùng bên phải trong C ++


Trong bài toán này, chúng ta được cho hai số N và M. Nhiệm vụ của chúng ta là tìm chỉ số của bit khác nhau ngoài cùng bên phải trong biểu diễn nhị phân của số.

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

Đầu vào - N =12, M =9

Đầu ra - 2

Giải thích - (12) 2 =1100 và (10) 2 =1010.

Bit thứ hai từ bên phải là một bit khác.

Để giải quyết vấn đề này, chúng ta sẽ phải tìm tất cả các bit khác nhau của các số. Để tìm tất cả các bit khác nhau, chúng ta sẽ tìm xor của M và N. Sau đó, chúng ta sẽ tìm bit tận cùng bên phải 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 = 12 , M = 9
N^M = 0110.

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

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 rightDiffBit(int m, int n) {
   int diffBit = rightSetBit(m^n);
   cout<<diffBit;
}
int main() {
   int N = 12, M = 10;
   cout<<"Postion of first right different bit of the number "<<N<<" & "<<M<<" is ";
   rightDiffBit(N, M);
   return 0;
}

Đầu ra

Postion of first right different bit of the number 12 & 10 is 2