Đề bài
Hoán đổi 2 số dùng toán tử bitwise XOR trong C.
Giải pháp
Biên dịch chuyển số thập phân sang nhị phân, thực hiện XOR bitwise để trao đổi giá trị không cần biến tạm.
Thuật toán
BẮT ĐẦU
B1: Khai báo a, b
B2: Nhập a, b
B3: Hoán đổi XOR:
a = a ^ b
b = a ^ b
a = a ^ b
B4: In a, b
KẾT THÚC
Chương trình hoàn chỉnh
#include <stdio.h>
int main() {
int a, b;
printf("Nhập a và b: ");
scanf("%d %d", &a, &b);
printf("Trước đổi: a=%d, b=%d\n", a, b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("Sau đổi: a=%d, b=%d\n", a, b);
return 0;
}
Kết quả chạy
Nhập a và b: 24 56
Trước đổi: a=24, b=56
Sau đổi: a=56, b=24
Giải thích bitwise:
a=24 = 011000 (nhị phân)
b=56 = 111000
a^b = 100000
b=a^b = 100000^111000 = 011000 (24)
a=a^b = 100000^011000 = 111000 (56)