各位大神 请问一下 这个为什么尾部会多一个0 啊?
十进制转二进制 为什么会多出一个0呀?运行第一个数的时候。。题目:
Problem G: 十进制整数转二进制
Time Limit: 1 Sec Memory Limit: 2 MB
Submit: 7814 Solved: 4472
[Submit][Status][Web Board]
Description
给出一个十进制的非负整数x,x<=216,把它转换成二进制数输出。
Input
输入为多行,每行一个整数x,至读入EOF结束。
Output
每行输出x对应的二进制数值。
Sample Input
0
1
3
33
65535
Sample Output
0
1
11
100001
1111111111111111
HINT
本题有多种解法:可以用循环迭代对2的除法和取余操作,不过处理的顺序与输出顺序相反,需要利用数组存储;用取对数或从大到小减去2的整数次幂的方法计算与输出顺序是相同的;也可以用printf()把十进制的数值处理成十六进制,然后1位十六进制转4位二进制;也可以用位运算处理。
代码:
#include <stdio.h>
#define N 65536
int main()
{
int n,i,a[N],m,l=0;
while(scanf("%d",&n)!=EOF)
{
if(n<0||n>65536) break;
else{
while(n!=0)
{
a[l]=n%2;
n=n/2;
l++;
}
for(i=l;i>=0;i--)
{
printf("%d",a[l-1]);
l--;
}
printf("\n");}
}
return 0;
}
请各位大神指教一下啊,,这个运行第一个数尾部会多出一个0是为什么?