C++十进制换二进制

来源:百度知道 编辑:UC知道 时间:2024/05/17 15:54:39
#include <iostream>
using namespace std;
int main()
{ int a,k(1),i(2),n,s(1),num;
cout<<"Ê®½øÖÆ»»¶þ½øÖÆ"<<endl;
cin>>a;
n=30;
for (;n>0;)
{s=2*s;n--;}

cout<<s<<endl;
for(;s>=1;)
{ num=a/s;if (num==1) {a=a-s;cout<<num;s=s/2;}
else {cout<<num;s=s/2;}}
system("pause");
}
要编成3的二进制为00000000000000000000000000011,一共32位的输出。我只能弄到31位,n一改为31就溢出了。。。大虾打救小弟啊

以下这个函数可以简单的实现你的功能!不妨试试。

#include <stdlib.h> //itoa()是这个文件里的库函数
#include <iostream>
using namespace std;
int main()
{
long int num,i;
char str[33];
cout<<"输入要转换的数:";
cin>>num;
itoa(num,str,2); //把num转化为二进制数形式存入str数组中
for (i=0; i<32-strlen(str); i++)
{
cout<<0; //正数不足32为的前面补0,
}
cout<<str<<endl; //输出num转化为二进制后的实际位数

system("pause");
return 0;
}

#include <iostream>
using namespace std;
int main()
{ int a,k(1),i(2),n,s(1),num;
cout<<"Ê®½øÖÆ»»¶þ½øÖÆ"<<endl;
cin>>a;
n=30;
for (;n>0;)
{s=2*s;n--;}

cout<<s<<endl;
for(;s>=1;)
{ num=a/s;if (num==1) {a=a-s;cout<<num;s=s/2;}
else {cout<