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

Hoán đổi 2 số dùng toán tử bitwise trong C


Đề 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)