解题思路:抛弃传统的短除法求二进制的策略,引入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 人评分
C语言程序设计教程(第三版)课后习题9.8 (Java代码)浏览:1642 |
【排队买票】 (C语言代码)浏览:900 |
Wu-求圆的面积 (C++代码)浏览:1894 |
C二级辅导-阶乘数列 (C语言代码)浏览:522 |
判定字符位置 (C语言代码)浏览:799 |
简单的a+b (C语言代码)浏览:416 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:376 |
简单的a+b (C语言代码)浏览:454 |
逆反的01串 (C语言代码)浏览:1445 |
自编的贪吃蛇小游戏,代码装上easyx图形库就能运行。浏览:942 |