c:十进制转换二进制
//十进制转换二进制#include <stdio.h>
int main ()
{
/* int data,i;
printf("输入整数:");
scanf("%d",&data);
for (i=0;i<33;i++)
{
data & 1<<(32-i) ? printf("1") : printf("0");
}
printf("\n");
*/
int data,i,j,sum1=1,sum2=1;
printf("输入整数:");
scanf("%d",&data);
switch (data)
{
case 0: for (i=0;i<32;i++)
printf("0");
printf("\n");break;
case 1: for (i=0;i<31;i++)
printf("0");
printf("1\n");break;
default:
for (i=0;sum1<=data;i++)
sum1 *= 2;
for (j=i;j<32;j++)
printf("0");
if (sum1==data)
{
printf("1");
sum1=0;
}
else
{
sum1 = data - sum1/2;
printf("1");
}
for (i=i-1,sum2=1;i>1;i--)
{
for (j=1;j<i;j++)
{
sum2 *= 2;
}
if (sum1>=sum2)
{
printf("1");
sum1 -= sum2;
}
else
printf("0");
}
if (sum1)
printf("1");
else
printf("0");
printf("\n");
}
return 0;
}
输入10,输出2进制是错的,输入7,输出2进制是对的。为什么?求指教