Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Vị trí bit khác nhau phải nhất trong C++


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