C言語の進数変換について質問です。
10進数を2進数に変換し、再度10進数に戻すプログラムを作成しており、2進数変換は出来たのですが、元の10進数に戻りません、、。どこが間違っているのか教えていただきたいです。よろしくお願いします。
#include <stdio.h> #include<math.h> #define MAX_BIT 32 int main(void) { unsigned int n=5, a, n2[MAX_BIT]; int n10 = 0; double x; for (int i = 0; i < MAX_BIT; i++) { // 入力したnを2進数に変換 a = (unsigned int)1 << i; if ((a & n) == 0) { n2[i] = 0; } else { n2[i] = 1; } } for (int i = 0; i < MAX_BIT; i++) printf("%d", n2[i]); //2進数表示 for (int i = 0; i < MAX_BIT; i++) { // nを10進数に戻す x = pow(2, i); if (n2[i] == 1) { n10 += (int)x; } } printf("%d", n10); return 0; }
回答2件
あなたの回答
tips
プレビュー