十进制转化为二进制怎样运行时间可以短一点啊

#include<stdio.h>
void main()
{
int x,z,sum=0;
scanf("%d",&x);
for(x,z=1;x!=0;x/2,z*10)
{
sum+=((x%2)*z);
}
printf("%d",sum);
}
我的程序是这样,运行时间1934ms怎样才能把运行时间限制在1000ms以下

不要用求余和除法,改为位操作
x/2改为 x=x>>1
另外你的代码不对啊,for语句最后应该是x=x/2,z=z*10,否则死循环啊
再说你的sum用int型也太小啦。11个1就溢出了


#include<iostream>
using namespace std;
void main()
{
   int n,i,j=0;
   int a[1000];
   cin>>n;
   i=n;
   while(i)
   {
    a[j]=i%2;
    i/=2;
    j++;
    
   }
   for(i=j-1;i>=0;i--)
    cout<<a[i];
   cout<<endl;
}