首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事

用C语言编程实现十进制转化为二进制

发布网友 发布时间:2022-04-21 03:34

我来回答

3个回答

热心网友 时间:2022-05-18 00:29

有两种计算方法,运行的结果是完全相同的:
一是采用位运算的方法:
#include
int main()
{ int n,i;
scanf("%d",&n);
for(i=31;i>=0;i--)
printf("%d",(n&(1<<i))!=0);
return 0;
}
二是采用楼主指定的方法:
#include
int a[32];
int main()
{ int n,i,k=0;
scanf("%d",&n);
if(n<0)k=1;
for(i=31;n;i--)
{a[i]=n%2;
n/=2;
}
if(k==1)
{for(i=31;i>=0;i--)
a[i]=1+a[i];
for(i=31;a[i];i--)
a[i]=0;
a[i]=1;
}
for(i=0;i<32;i++)
printf("%d",a[i]);
return 0;
}

追问请问:1.当n为负数时,n%2一定为正数吗?
2.代码“a[i]=1+a[i]",,如果a[i]本来为1,运行后a[i]变为2,之后会怎么样?
3.”for(i=31;a[i];i--)
a[i]=0;
a[i]=1; “
看不明白这段。它是等同于”if (a[i]=0)a[i]=1;
else a[i]=0;"吗?
求指教!

追答1. 当n为负数时,N,除以二的余数不会是正数,他要么是零,要么是负一。事实是,如果n为奇数,那么n除以二的余数一定是一或者负一。
2.这个代码当中,那个加号应该是减号。它的作用就是经过这个运算以后,原来是一的就变成零,原来是零的就变成一。整个第二步的作用就是对原来二进制值的全部每一位都取反。
3.这一段实际上是前面两行是一个循环,最后一行是循环结束以后才做的,它的作用就是在这二进制的末位加上1。如果后面的连续几位都是1,那么他们就全部变为0,直到前面紧靠着的一位原来是0的就变成1。

热心网友 时间:2022-05-18 02:04

有一种*操作可以很快实现这个

发不了代码就发图吧emmm

得到的结果确实是没问题的emmm

如果你是c语言不是c++的话,可以了解一下这样搞

热心网友 时间:2022-05-18 03:55

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com