Trong bài toán này, cho hai số N và M. Nhiệm vụ tìm chỉ số của bit khác nhau (different bit) phải nhất trong biểu diễn nhị phân.
Ví dụ minh họa:
Đầu vào - N = 12, M = 9
Kết quả - 2
Giải thích - (12)2 = 1100 và (10)2 = 1010.
Bit thứ 2 từ phải là bit khác nhau.
Để giải bài toán, tìm tất cả bit khác nhau bằng XOR của M và N. Sau đó tìm bit phải nhất của M^N.
Ví dụ minh họa:
N = 12, M = 9 N^M = 0110. Bit 1 phải nhất ở chỉ số 2.
Chương trình minh họa
#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 << "Vị trí bit khác nhau phải nhất của " << N << " & " << M << " là ";
rightDiffBit(N, M);
return 0;
}
Kết quả
Vị trí bit khác nhau phải nhất của 12 & 10 là 2