C++求解给定一个正整数n,要求输出对应的二进制数中为1的所有位置。最低位的位置为0

来源:百度知道 编辑:UC知道 时间:2024/09/21 22:20:30
给定一个正整数n,要求输出对应的二进制数中为1的所有位置。最低位的位置为0。例如:13所对应的二进制是1101,其中为1的位置是0,2,3。要求:输入一个正整数n(int类型),输出所对应的二进制数为1的所有位置,逗号分隔。如输入13,则输出0,2,3。

我这边 IE出了点问题。
while(i>0)
{
if(i%2==1)
printf("%d,",n);
i=i/2;
n++;
}
这是我用C写的 你参考下,主要就是用while比较适合一点

#include<iostream>
using namespace std;
int main()
{
int n;
cout<<"input:";
cin>>n;
for(int i=0;n>0;i++,n/=2)
{
if(i!=0)
{
if(n%2==1)
cout<<','<<i;
continue;
}
cout<<i;
}

return 0;
}

#include<iostream>
using namespace std;
int main()
{
int i,count=0;
cin>>i;
for(int t=0;t<sizeof(int);t++)
{
if (i&0x01)
cout<<t<<",";
i=i>>1;
}
cout<<endl;
return 0;
}