32ビット符号付き整数を2進数表示に変更する関数を作っています。(引数はx)負の値が入力されたら、2の補数で表示させたいです。そこで、1を0に、0を1にしたいのですが、うまく動きません。どこが間違っているか教えてください。
作った関数sort_2のコードはこれです。
c
1void binary_m(int x) { 2 int i = 0; 3 int dt[32] = { 0 }; 4 5 if (x > 0) { 6 for (i = 0; x > 0; i++) { 7 8 dt[i] = x % 2; 9 x = x / 2; 10 } 11 while (i > 0) { 12 printf("%d", dt[--i]); 13 } 14 } 15 else { 16 x = -x; 17 for (i = 0; x > 0; i++) { 18 19 dt[i] = x % 2; 20 x = x / 2; 21 } 22 if (dt[i] = 0) { 23 dt[i] += 1; 24 } 25 else { 26 dt[i] = 0; 27 } 28 while (i > 0) { 29 printf("%d", dt[--i]); 30 } 31 } 32 33}
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。