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

Vị trí bit chung phải nhất của hai số trong C++


Trong bài toán này, cho hai số M và N. Nhiệm vụ in vị trí (chỉ số) của bit chung (same bit) phải nhất của hai số.

Ví dụ minh họa:

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

Kết quả - 3

Giải thích - (4)2 = 100, (7)2 = 111. Bit chung phải nhất ở chỉ số 3.

Để giải bài toán, tìm tất cả bit giống nhau của hai số. Dùng XOR của M và N, sau đó tìm bit phải nhất của phần phủ định của M^N.

Ví dụ minh họa:

N = 4, M = 7 
~(N^M) = 100. 
Bit 1 phải nhất ở chỉ số 3.

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 rightSameBit(int m, int n) { 
    int diffBit = rightSetBit(~(m^n)); 
    cout << diffBit; 
} 

int main() { 
    int N = 4, M = 7; 
    cout << "Vị trí bit chung phải nhất của " << N << " & " << M << " là "; 
    rightSameBit(N, M); 
    return 0; 
}

Kết quả

Vị trí bit chung phải nhất của 4 & 7 là 3