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

Chương trình C tìm bù 1 và bù 2 của số nhị phân

Ví dụ

Nhập: 10010001

Bù 1: 01101110

Bù 2: 01101111

Thuật toán

  1. Đảo bit: 0→1, 1→0 → được bù 1.
  2. Từ bit cuối (LSB) cộng 1: nếu bit là 1 thì đổi thành 0 và nhớ (mask=1), nếu bit là 0 thì đổi thành 1 và dừng (mask=0).

Chương trình C

#include <string.h>
#include <stdio.h>

main() {
    char str[32], strdp[32];
    int mask, i;

    printf("Nhập số nhị phân: ");
    scanf("%s", str);
    strcpy(strdp, str);

    // Bù 1
    for (i = 0; i < strlen(str); i++) {
        if (str[i] == '1') str[i] = '0';
        else str[i] = '1';
    }
    printf("Bù 1 của %s là %s\n", strdp, str);

    // Bù 2
    mask = 1;
    for (i = strlen(str) - 1; i >= 0; i--) {
        if (mask == 1) {
            if (str[i] == '1') { str[i] = '0'; mask = 1; }
            else { str[i] = '1'; mask = 0; }
        }
    }
    printf("Bù 2 của %s là %s", strdp, str);
}

Kết quả

Nhập số nhị phân: 11001110
Bù 1 của 11001110 là 00110001
Bù 2 của 11001110 là 00110010