解题思路:抛弃传统的短除法求二进制的策略,引入math库函数,运用减法求二进制,避免事后的倒序处理;同时,因为负数是采取补码运算的方式,所以为了简便过程,我们将符号位处理之后便可将数据化为对应的正数进行操作
注意事项:网站的测试数据中应该没有涉及负数,但为了严谨起见,这边纠正一下另一份题解中的错误,代码如下
参考代码:
#include<stdio.h>
#include<math.h>
int main()
{
int a[8]={0};
int n=0,i=1;
scanf("%d",&n);
if(n>=0)
a[0]=0;
else
{a[0]=1;
n=128+n;}
int k=6;
while (n)
{
int x=pow(2,k);
if (n>=x)
{
a[i] = 1;
n-=x;
}
i++;
k--;
}
for (i=0;i<8;i++)
printf("%d",a[i]);
return 0;
}
0.0分
0 人评分