C言語での10進数から2進数への変換方法


方法1: ループを使用した変換 この方法では、10進数を2で割りながらビットを取得し、逆順に並べることで2進数を生成します。

#include <stdio.h>
void decimalToBinary(int decimal) {
    int binary[32];  // 32ビットの2進数を格納する配列
    int i = 0;
    while (decimal > 0) {
        binary[i] = decimal % 2;
        decimal = decimal / 2;
        i++;
    }
    printf("2進数: ");
    for (int j = i - 1; j >= 0; j--) {
        printf("%d", binary[j]);
    }
}
int main() {
    int decimal;
    printf("10進数を入力してください: ");
    scanf("%d", &decimal);
    decimalToBinary(decimal);
    return 0;
}

方法2: ビットシフト演算を使用した変換 この方法では、ビットシフト演算子を使用して10進数を2進数に変換します。

#include <stdio.h>
void decimalToBinary(int decimal) {
    int size = sizeof(decimal) * 8;  // サイズを取得
    for (int i = size - 1; i >= 0; i--) {
        int bit = (decimal >> i) & 1;
        printf("%d", bit);
    }
}
int main() {
    int decimal;
    printf("10進数を入力してください: ");
    scanf("%d", &decimal);
    decimalToBinary(decimal);
    return 0;
}

方法3: ビットマスクを使用した変換 この方法では、ビットマスクを使用して10進数を2進数に変換します。

#include <stdio.h>
void decimalToBinary(int decimal) {
    int size = sizeof(decimal) * 8;  // サイズを取得
    unsigned int mask = 1 << (size - 1);  // ビットマスクを作成
    for (int i = 0; i < size; i++) {
        int bit = (decimal & mask) ? 1 : 0;
        printf("%d", bit);
        mask >>= 1;  // マスクを右シフト
    }
}
int main() {
    int decimal;
    printf("10進数を入力してください: ");
    scanf("%d", &decimal);
    decimalToBinary(decimal);
    return 0;
}

これらの方法を使用することで、C言語で10進数から2進数への変換を行うことができます。ご参考までに、それぞれの方法について説明とコード例を提供しました。