Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

สลับบิตของตัวเลขอื่นสำหรับทุกบิตที่ตั้งค่าใน C++

ในปัญหานี้ เราได้รับค่าจำนวนเต็มสองค่า งานของเราคือการสร้างโปรแกรม C++ เพื่อดำเนินการ "สำหรับทุกบิตที่ตั้งค่าของตัวเลขหนึ่ง ให้สลับบิตของอีกตัวหนึ่ง"

ตัวอย่างเพื่อเข้าใจปัญหา

Input: 3 7 Output: 4
Binary of 3: 011
Binary of 7: 111

บิตที่หนึ่งและบิตที่สองของตัวเลขที่สองถูกสลับ ทำให้กลายเป็น 100 ซึ่งเท่ากับ 4

วิธีการแก้ปัญหา

วิธีหนึ่งในการแก้ปัญหาคือการดำเนินการ XOR ของตัวเลขทั้งสอง ผลลัพธ์จะเป็นการสลับบิตที่บิตของตัวเลขแรกเป็น 1 โดยใช้การดำเนินการ XOR

ตัวอย่างโค้ด

#include <bits/stdc++.h>
using namespace std;

int main() {
    int a = 3, b = 7;
    cout << "The numbers are " << a << " & " << b << endl;
    cout << "The result of flipping bits is " << (a ^ b);
    return 0;
}

ผลลัพธ์

The numbers are 3 & 7
The result of flipping bits is 4